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.
Ayar yönetimi için dört öğe birlikte kullanılır:
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.
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.
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.
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 ("").
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.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Uygulama | Bölüm | Anahtar | Varsayılan |
| 2 | ExcelDestek | Rapor | SonHazirlayan | Bilinmiyor |
| 3 | ExcelDestek | Rapor | SonKlasor | Belgelerim |
| 4 | ExcelDestek | Pencere | Yakinlastirma | 100 |
Ayar ListesiExcelDepo v1.0.0
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.| A | B | |
|---|---|---|
| 1 | Bilgi | Değer |
| 2 | Açılış Sayısı |
Açılış SayacıExcelDepo v1.0.0
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.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ayar | Kayıtlı Değer | Varsayılan | Kullanılan |
| 2 | Tema | Koyu | Açık | Koyu |
| 3 | Dil | Türkçe | Türkçe | |
| 4 | Para Birimi | TL | TL | |
| 5 | Ondalık Ayırıcı | Virgül | Nokta | Virgül |
VarsayılanlarExcelDepo v1.0.0
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.