Özellik ikonu

GetSetting

İndirme izni yok

Genel Bakış

GetSetting (GetSetting işlevi), VBA ile daha önce SaveSetting deyimiyle kaydedilmiş bir uygulama ayarını okuyup metin olarak döndüren işlevdir. Kullanıcının son seçtiği klasörü, kullanıcı adını ya da açılış sayısını sonraki oturumda yeniden kullanmak için işe yarar. Ayar bulunamazsa hata vermez, sizin verdiğiniz varsayılan değeri döndürür.

Söz dizimi​

İşlev dört bağımsız değişken alır ve sonucu Variant (içinde metin) olarak verir:
VBA 4 satır
GetSetting(appname, section, key, [default])

Dim deger As String
deger = GetSetting("ExcelDestek", "Rapor", "SonHazirlayan", "Bilinmiyor")
  • appname: Ayarın ait olduğu uygulama ya da proje adını belirten metin; zorunludur.
  • section: Ayarın bulunduğu bölümün adı; zorunludur.
  • key: Okunacak anahtarın adı; zorunludur.
  • default: Anahtar bulunamazsa döndürülecek değer; isteğe bağlıdır. Verilmezse varsayılanı sıfır uzunluklu metindir ("").
Bağımsız değişkenleri adlandırarak da yazabilirsiniz: GetSetting appname:="ExcelDestek", section:="Rapor", key:="SonHazirlayan" biçimi geçerlidir.

Ayarlar nerede saklanır​

Windows'ta ayarlar kayıt defterinde, kullanıcıya özel şu konumda tutulur: HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\key. Mac'te aynı bilgiler bir tercih dosyasında saklanır. Bu işlev yalnızca VBA'nın kendi ayar alanını okur; Excel'in kendi seçeneklerini ya da başka programların kayıt defteri anahtarlarını okuyamaz.

Ayar yönetimi için dört öğe birlikte kullanılır:
  • SaveSetting: Ayarı yazar ya da günceller.
  • GetSetting: Tek bir ayarı okur.
  • GetAllSettings: Bir bölümdeki tüm anahtar ve değerleri iki boyutlu dizi olarak verir.
  • DeleteSetting: Anahtarı, bölümü ya da uygulamanın tüm ayarlarını siler.

Dönüş değeri ve tür dönüşümü​

İşlev her zaman metin döndürür. Sayı, tarih ya da Boolean olarak kullanacaksanız dönüştürmeniz gerekir: CLng, CDbl, CDate ve CBool bu iş için kullanılır. Varsayılan değeri de dönüştürmeye uygun verin; örneğin sayısal bir ayar için "0" yazın. Boş metin CLng ile dönüştürülürse hata oluşur. Daha güvenli yol, Val işlevini kullanmaktır; boş metin için sıfır verir.

1. Ayarı varsayılan değerle okumak​

Aşağıdaki sayfa, uygulamanızda kullanacağınız ayarları ve varsayılanlarını listeler. Kodu bir standart modüle (Ekle > Modül) yapıştırın. İlk makro ayarı yazar, ikincisi okur; ayar hiç kaydedilmemişse varsayılan olan Bilinmiyor görünür.
VBA 13 satır
Option Explicit

' Ayarı kayıt defterine yazar
Sub SonHazirlayaniKaydet()
    SaveSetting "ExcelDestek", "Rapor", "SonHazirlayan", "Ayşe Demir"
End Sub

' Ayarı okur; kayıt yoksa "Bilinmiyor" döner
Sub SonHazirlayaniOku()
    Dim ad As String
    ad = GetSetting("ExcelDestek", "Rapor", "SonHazirlayan", "Bilinmiyor")
    MsgBox "Raporu son hazırlayan: " & ad
End Sub
GetSetting
Formülünü incelemek için bir hücre seçin.
ABCD
1UygulamaBölümAnahtarVarsayılan
2ExcelDestekRaporSonHazirlayanBilinmiyor
3ExcelDestekRaporSonKlasorBelgelerim
4ExcelDestekPencereYakinlastirma100
Ayar ListesiExcelDepo v1.0.0
Bu örnek kayıt defterine eriştiği için burada çalıştırılmaz. SonHazirlayaniKaydet çalıştıktan sonra SonHazirlayaniOku, ileti kutusunda Ayşe Demir adını gösterir. Kayıt yapılmamış bir bilgisayarda ise varsayılan olarak verdiğiniz Bilinmiyor metni görünür.

2. Açılış sayacı tutmak​

Bu kodu ThisWorkbook modülüne yapıştırın. Çalışma kitabı her açıldığında sayaç ayarı okunur, bir artırılır, yeniden kaydedilir ve ilk sayfadaki B2 hücresine yazılır. GetSetting metin döndürdüğü için sayıya Val ile çevrilir.
VBA 15 satır
Option Explicit

Private Sub Workbook_Open()
    Dim sayac As Long

    ' Ayar yoksa "0" döner; Val boş metinde bile hata vermez
    sayac = CLng(Val(GetSetting("ExcelDestek", "Acilis", "Sayac", "0")))
    sayac = sayac + 1

    ' Yeni değeri kaydet
    SaveSetting "ExcelDestek", "Acilis", "Sayac", CStr(sayac)

    ' Değeri ilk sayfada göster
    ThisWorkbook.Worksheets(1).Range("B2").Value = sayac
End Sub
GetSetting
Formülünü incelemek için bir hücre seçin.
AB
1BilgiDeğer
2Açılış Sayısı
Açılış SayacıExcelDepo v1.0.0
Olay ve kayıt defteri kullandığı için örnek burada çalıştırılmaz. Kitabı her açışınızda B2 hücresindeki sayı bir artar. Sayaç kayıt defterinde tutulduğu için kitabı başka bir bilgisayara taşırsanız sayaç o bilgisayarda sıfırdan başlar.

3. Boş ayar için varsayılana dönmek​

GetSetting'in varsayılan değer mantığını kayıt defterine dokunmadan görmek için hazırlanmış bir örnektir. B sütunu kayıtlı değeri, C sütunu varsayılanı gösterir; bazı kayıtlı değerler boştur. Kodu standart modüle yapıştırın ve çalıştırın; makro kullanılacak değeri D sütununa yazar.
VBA 19 satır
Option Explicit

' Kayıtlı değer boşsa varsayılanı kullanır
Sub VarsayilanUygula()
    Dim ws As Worksheet
    Dim r As Long

    Set ws = ActiveSheet

    For r = 2 To 5
        If Len(Trim(ws.Cells(r, 2).Value)) = 0 Then
            ' Kayıt yok: varsayılanı al
            ws.Cells(r, 4).Value = ws.Cells(r, 3).Value
        Else
            ' Kayıt var: kayıtlı değeri al
            ws.Cells(r, 4).Value = ws.Cells(r, 2).Value
        End If
    Next r
End Sub
GetSetting
Formülünü incelemek için bir hücre seçin.
ABCD
1AyarKayıtlı DeğerVarsayılanKullanılan
2TemaKoyuAçıkKoyu
3DilTürkçeTürkçe
4Para BirimiTLTL
5Ondalık AyırıcıVirgülNoktaVirgül
VarsayılanlarExcelDepo v1.0.0
Kayıtlı değeri dolu olan satırlarda makro kayıtlı değeri alır; Tema için Koyu ve Ondalık Ayırıcı için Virgül sonucu oluşur. Kayıtlı değeri boş olan satırlarda varsayılan kullanılır; Dil için Türkçe, Para Birimi için TL yazılır. GetSetting işlevi de ayar bulunamadığında aynı şekilde default bağımsız değişkenini döndürür.

Kullanırken dikkat edin​

  • Varsayılan değeri her zaman verin: default bağımsız değişkenini yazmazsanız ayar bulunamadığında boş metin gelir. Sayısal ayarlarda bu boş metin dönüştürme hatasına yol açabilir; bu yüzden anlamlı bir varsayılan (örneğin "0") verin.
  • Sonuç her zaman metindir: Sayı, tarih ya da Boolean ayarlarını okurken Val, CLng, CDate ya da CBool ile dönüştürün. Tarihleri kaydederken tutarlı bir biçim kullanın; bölgesel ayarlar farklı bilgisayarlarda yanlış okumaya yol açabilir.
  • Ayarlar kullanıcıya ve bilgisayara özeldir: Ayarlar çalışma kitabının içinde değil, kullanıcının kayıt defterinde durur. Kitabı başka birine gönderirseniz ayarlar onunla gitmez. Kitapla taşınması gereken bilgiler için gizli bir sayfa ya da ad tanımı kullanın.
  • Kurumsal kısıtlamalar: Bazı kurumsal bilgisayarlarda kayıt defterine yazma ya da okuma kısıtlanmış olabilir. Bu durumda işlev varsayılan değeri döndürür, SaveSetting ise hata verebilir. Kritik iş akışlarını yalnızca bu ayarlara bağlamayın.
  • Başka kayıt defteri anahtarlarını okumaz: GetSetting yalnızca VBA program ayarları alanında çalışır. Başka bir yazılımın ya da Windows'un anahtarına erişmek için WScript.Shell nesnesinin RegRead yöntemi gibi farklı yollar gerekir; bunlar daha dikkatli kullanılmalıdır.
  • İlgili konular:
    • SaveSetting: Ayarı kayıt defterine yazan deyim.
    • GetAllSettings: Bir bölümdeki tüm ayarları dizi olarak döndürür.
    • DeleteSetting: Kayıtlı ayarları siler.
    • Workbook_Open: Kitap açılırken ayarları okumak için kullanılan olay.
    • Val, CLng, CDate, CBool: Metin olarak gelen ayarı dönüştüren işlevler.
    • CustomDocumentProperties: Ayarı çalışma kitabının içinde saklama seçeneği.
    • DEĞER: Sayfada metni sayıya çeviren çalışma sayfası işlevi.
Ö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
9
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst