Özellik ikonu

SaveSetting

İndirme izni yok

Genel Bakış

SaveSetting (SaveSetting statement), bir uygulamaya ait ayarı Windows kayıt defterindeki VBA programlarına ayrılmış bölüme yazan ya da var olan ayarı güncelleyen VBA deyimidir. Kullanıcının son seçtiği şehir, pencere konumu ya da oran gibi bilgileri çalışma kitabını kapatsanız bile saklamak için kullanılır. Kaydedilen ayar GetSetting işleviyle daha sonra geri okunur.

Söz dizimi​

SaveSetting deyiminin dört bağımsız değişkeni vardır ve dördü de zorunludur:
VBA
SaveSetting appname, section, key, setting
  • appname: Ayarı kullanan uygulamanın ya da projenin adını içeren metin. Zorunludur, varsayılanı yoktur.
  • section: Anahtarın bulunacağı bölümün adı. Zorunludur, varsayılanı yoktur.
  • key: Kaydedilecek ayarın (anahtarın) adı. Zorunludur, varsayılanı yoktur.
  • setting: Anahtara yazılacak değer. Zorunludur; bir ifade olabilir ve metin olarak saklanır.
Anahtar daha önce yoksa oluşturulur, varsa değeri sessizce değiştirilir. Deyim bir değer döndürmez; bu nedenle bağımsız değişkenler parantez içine alınmadan yazılır.

Kayıt defterinde nereye yazılır​

Windows'ta ayarlar şu konuma yazılır: HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section. Bu konum sabittir; SaveSetting ile kayıt defterinin başka bir bölümüne yazamazsınız. Ayarlar oturum açan Windows kullanıcısına özeldir, bu yüzden aynı bilgisayarda farklı kullanıcılar kendi değerlerini görür.

Ayarlar çalışma kitabının içinde değil, bilgisayarda saklanır. Dosyayı başka bir bilgisayara taşırsanız ayarlar da taşınmaz. Bilgisayardan bağımsız bir saklama istiyorsanız değerleri gizli bir sayfaya yazmak daha uygundur. Mac sürümünde ayarlar kayıt defteri yerine bir ayar dosyasında tutulur.

Okuma, silme ve veri türü​

Kaydedilen ayarı okumak için GetSetting, bir bölümdeki tüm anahtarları dizi olarak almak için GetAllSettings, silmek için DeleteSetting kullanılır:
VBA 3 satır
deger = GetSetting(appname, section, key, default)
SaveSetting appname, section, key, setting
DeleteSetting appname, section, key
  • default: İsteğe bağlıdır; anahtar bulunamazsa döndürülecek değerdir. Belirtilmezse boş metin ("") döner.
  • Veri türü: Değer her zaman metin olarak yazılır ve metin olarak okunur. Tarih ya da sayı gerekiyorsa CDate, CLng ya da CDbl ile dönüştürün; aksi durumda karşılaştırmalar metin olarak yapılır.
  • Ondalık ayırıcı: Ondalıklı bir sayıyı CStr ile yazarsanız bilgisayarın bölge ayarına göre virgül ya da nokta kullanılır; farklı ayarlı bir bilgisayarda okurken dikkatli olun.

1. Sayfadaki ayarları kayıt defterine yazma​

Sayfada üç ayar ve değerleri var. Kodu standart modüle (Ekle > Modül) yapıştırın. Makro her satırı okuyup ExcelDestek uygulamasının Rapor bölümüne kaydeder. Kayıt defterine yazdığı için bu örnek burada çalıştırılmaz.
VBA 13 satır
Option Explicit

Sub AyarlariKaydet()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    ' 2. satırdan 4. satıra kadar her ayarı kaydeder
    For i = 2 To 4
        SaveSetting "ExcelDestek", "Rapor", ws.Cells(i, 1).Value, CStr(ws.Cells(i, 2).Value)
    Next i
End Sub
SaveSetting
Formülünü incelemek için bir hücre seçin.
AB
1Ayar AdıKaydedilecek Değer
2SehirAnkara
3KdvOrani20%
4SonRaporTarihi31.03.2025
AyarlarExcelDepo v1.0.0
Makro çalıştığında üç anahtar kayıt defterindeki ExcelDestek\Rapor bölümüne yazılır. Sayfada görünür bir değişiklik olmaz; ayarları Kayıt Defteri Düzenleyicisi'nde ya da GetSetting ile görebilirsiniz. Makroyu tekrar çalıştırırsanız aynı anahtarların değerleri güncellenir, yeni anahtar eklenmez.

2. Kitap kapanırken son konumu saklama​

Çalışma kitabı kapanırken etkin sayfa adı ve etkin hücre adresi kaydedilir, kitap açılırken geri okunur. Kodu ThisWorkbook modülüne yapıştırın. Olaylar kitabı açıp kapatmayı gerektirdiği için örnek çalıştırılmaz.
VBA 21 satır
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' Kapanmadan önce son konumu kaydeder
    SaveSetting "ExcelDestek", "Oturum", "SonSayfa", ActiveSheet.Name
    SaveSetting "ExcelDestek", "Oturum", "SonHucre", ActiveCell.Address
End Sub

Private Sub Workbook_Open()
    Dim sayfaAdi As String
    Dim hucreAdresi As String

    ' Kayıt yoksa boş metin ve A1 döner
    sayfaAdi = GetSetting("ExcelDestek", "Oturum", "SonSayfa", "")
    hucreAdresi = GetSetting("ExcelDestek", "Oturum", "SonHucre", "A1")

    If sayfaAdi <> "" Then
        On Error Resume Next
        Worksheets(sayfaAdi).Activate
        Range(hucreAdresi).Select
        On Error GoTo 0
    End If
End Sub
SaveSetting
Formülünü incelemek için bir hücre seçin.
AB
1AyarAnahtar
2Son sayfaSonSayfa
3Son hücreSonHucre
OturumExcelDepo v1.0.0
Kitabı kapattığınızda etkin sayfa adı ve hücre adresi kaydedilir. Kitap bir sonraki açılışta o sayfaya ve hücreye döner. Silinmiş ya da adı değişmiş bir sayfa kaydedilmişse On Error Resume Next hata iletisini engeller ve kitap olduğu gibi açılır.

3. Ayarın kayıt yolunu sayfada gösterme​

Bu örnek kayıt defterine yazmaz; yalnızca verdiğiniz uygulama, bölüm ve anahtar adlarıyla SaveSetting deyiminin hangi konuma yazacağını sayfada gösterir. Kodu standart modüle yapıştırın ve çalıştırın.
VBA 14 satır
Option Explicit

Sub YolOlustur()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    ' D sütununa SaveSetting'in kullanacağı kayıt defteri yolunu yazar
    For i = 2 To 4
        ws.Cells(i, 4).Value = "HKCU\Software\VB and VBA Program Settings\" & _
            ws.Cells(i, 1).Value & "\" & ws.Cells(i, 2).Value & "\" & ws.Cells(i, 3).Value
    Next i
End Sub
SaveSetting
Formülünü incelemek için bir hücre seçin.
ABCD
1UygulamaBölümAnahtarAyar Yolu
2ExcelDestekRaporSehirHKCU\Software\VB and VBA Program Settings\ExcelDestek\Rapor\Sehir
3ExcelDestekRaporKdvOraniHKCU\Software\VB and VBA Program Settings\ExcelDestek\Rapor\KdvOrani
4SatisTakipGorunumSonSayfaHKCU\Software\VB and VBA Program Settings\SatisTakip\Gorunum\SonSayfa
Ayar YoluExcelDepo v1.0.0
Makro D sütununa her satır için kayıt yolunu yazar. İlk satırın yolu HKCU\Software\VB and VBA Program Settings\ExcelDestek\Rapor\Sehir, ikincisinin HKCU\Software\VB and VBA Program Settings\ExcelDestek\Rapor\KdvOrani, üçüncüsünün HKCU\Software\VB and VBA Program Settings\SatisTakip\Gorunum\SonSayfa olur. Görüldüğü gibi her ayar, VB and VBA Program Settings anahtarının altında uygulama, bölüm ve anahtar sırasıyla saklanır.

Kullanırken dikkat edin​

  • Ayarlar kitapta değil bilgisayarda saklanır: Değerler kayıt defterine yazıldığı için çalışma kitabını başka bir bilgisayara ya da başka bir kullanıcıya verdiğinizde ayarlar gelmez. Böyle durumlarda varsayılan değer verilmiş bir GetSetting çağrısı kullanın.
  • Kurumsal kısıtlamalar: Bazı kurumlarda kayıt defterine yazma yetkisi kısıtlanmış olabilir; bu durumda deyim hata verir. Kritik işlemlerde On Error ile hata yönetimi ekleyin.
  • Her şey metin olarak saklanır: Tarih, sayı ve mantıksal değerler metne çevrilerek yazılır. Okurken CDate, CLng, CDbl ya da CBool ile dönüştürmeyi unutmayın.
  • Başka konuma yazamaz: SaveSetting yalnızca VB and VBA Program Settings altına yazar. Kayıt defterinin başka bölümlerini değiştirmek için bu deyim kullanılamaz.
  • Geçersiz bağımsız değişkenler: Dört bağımsız değişkenin de verilmesi gerekir. Eksik ya da geçersiz bir bağımsız değişken çalışma zamanı hatası oluşturur. Anahtar adlarını sabit olarak tanımlarsanız yazım hatalarından kaçınırsınız.
  • İlgili konular:
    • GetSetting
    • GetAllSettings
    • DeleteSetting
    • Workbook_Open ve Workbook_BeforeClose olayları
    • CDate, CLng, CDbl ve CStr dönüştürme işlevleri
    • On Error deyimi
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
11
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst