Diğer Fonksiyonlar
VBA'de Kullanılan Fonksiyonlar
VBA'de kullanılan birçok fonksiyon var elbette. Bunların bir kısmını önceki 3 bölümde gördük. Bunun dışında farklı bölümlerde ele aldığımız (Interaktivite bölümündeki InputBox gibi) ve sonraki bölümlerde ele alacağımız (Dosya işlemlerindeki ChDir gibi) fonksiyonlar da var.
Bizim bu bölümde ele alacağımız fonksiyonlar da tıpkı bu yukarıda bahsettiklerim (metinsel, numerik ve tarihsel) gibi kendi başına kullanılan önemli fonksiyonlar olacak. Bunlar da öncekiler gibi çeşitli bağımsız Modüller (Information ve Interactive modülleri) içinde bulunuyor, Class modüllerinde değil. O yüzden bunları da tıpkı diğerleri gibi, önlerinde bir nesne olmadan kullanacağız.
Aşağıdaki görselden de farkedileceği üzere Modüllerin ikonu Class Modüllerinden farklıdır. (Bunlar başka dillerdeki Static/Shared sınıflara benzerler)
Fonksiyonlar
- IsArray, IsDate, IsEmpty, IsError, IsNull, IsNumeric, IsObject: Bunlar parametre olarak aldıkları ifadelerin sırayla dizi mi, tarihsel ifade mi, boş mu, hata mı, null mı, sayısal mı obje mi olduğunu döndürür. Çoğunun kullanımı farklı yerlerde gösterildiği için burada ayrıca detaya girmiyorum.
- TypeName: Değişkenin tipini verir. (String, Integer, Range vs). Genelde rutin kodlarımız içinde bulunmak yerine bir şeyleri kontrol ederken test amaçlı kullanılır.
- VarType: Değişkenin tip numarasını verir. Alacağı değerler şöyledir: 0: empty, 1: null, 2: int, 3: long, 7: Date, 8: string, 9: object, 11: boolean, 12: Variant (sadece variant arraylerde), 8192: Array (normal değer + 8192). Bu da TypeName gibi genelde test amaçlı kullanılır.
Bunların hepsini bir arada ele alındığı bir örneğe buradan ulaşabilirsiniz.
Environ
İşletim sistemiyle ilgili bilgiler verir. Ya bir indeksle ya da ifade ile kullanılır. Tüm indekslerin değerlerini aşağıdaki kod ile bulabilirsiniz.
Sub env()
For i = 1 To 46
Debug.Print "i:" & i & ":" & Environ(i)
Next i
End Sub
'İfade kullanımı da şöyledir
Debug.Print Environ("USERNAME")
Ben şahsen bunlardan özellikle COMPUTERNAME ve USERNAME'i sıklıkla kullanma ihtiyacı duyuyorum. Mesela ortak kullanılan bir dosya var diyelim, bu bende açıldığında farklı bir işleve sahip olsun başkalarında açıldığında farklı işleve sahip olsun istiyorsam, bunu şöyle hallederim:
If Environ("USERNAME") = 12345 Then 'kullanıcı adımın 12345 olduğunu varsayın
'diğer kodlar
Else
'Exit Sub
End If
Birden fazla bilgisayarla çalışıyorsam ve sadece birinde açılan dosyada işlem olsun istersem de şu kod işimi görür:
If Environ("COMPUTERNAME") = "A12345" Then 'bilgisayar adımın A12345 olduğunu varsayın
'diğer kodlar
Else 'B12345 ve L12345'te bir şey yapmadan çıkar
'Exit Sub
End If
CreateObject ve GetObject
Bunlar objeler bölümünde ele alınıyor.
SendKeys
Klavyeden belli tuş veya tuş kombinasyonlarının basılması taklidini yapar.
SendKeys "^{F2}" 'Ctrl+F2 kombinasyonuna basılmış sayar
Tüm kullanılabilecek parametreler burada bulunmaktadır.
Shell
Belirli bir programı açar. Hesap makinesi, Windows Explorer en yaygın olanlarıdır. Mesela aşağıdaki örnekte diyelim ki bir dosyayı parçalara ayırdınız, dosyaların bölündüğü yer de Böl klasörü olsun. Kullanıcıya en son bir mesaj verip, ilgili klasörün açılması sağlanır.
Sub shellornek()
'kod bloğu
'
'
MsgBox "İşlem tamam. Dosyaları görmek için tıklayınız"
Call Shell("explorer.exe" & " " & "C:\böl", vbNormalFocus)
'veya Shell "explorer.exe" & " " & "C:\böl", vbNormalFocus
End Sub