Diğer 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üdeki InputBox gibi) ve sonraki
bölümlerede 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ülllerinden farklıdır.(Bunlar başka dillerdeki Static/Shared sınıflara
benzerler)
Fonksiyonlar
IsArray,
IsDate,IsEmpty,IsError,IsNull,IsNumeric,IsObjcet: Bunlar parametere
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şkları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 Sub
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 'kullanıcı adımın 12345 olduğunu varsayın
'diğer kodlar
Else 'B12345 ve L12345'te birşey yapmadan çıkar
'Exit Sub
End Sub
CreateObject ve GetObject:Bunlar objeler bölümüde ele alınıyor.
SendKeys:Klavyeden belli tuş vey tuş
kombinasyonlarının basılması taklidini yapar.
SendKeys "^{F2}" 'Ctrl+F2 kombinasyonuna basılmış sayar
Tüm kullanılabilcekek parametereler
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. Dosyları görmek için tıkayınız"
Call Shell("explorer.exe" & " " & "C:\böl", vbNormalFocus)
'veya Shell "explorer.exe" & " " & "C:\böl", vbNormalFocus
End Sub
TEST SORULARI
Son Sorumuz şuymuş:Bir metindeki tüm noktaları yoketmek istiyorsunuz. Hangi fonksiyonu kullanırdınız?
Soru:
A şıkkı:
B şıkkı:
C şıkkı:
D şıkkı:
Doğru Cevap
Etiketler
İlişkili konuyu seç
96938
Label
* Sorulara verilen yanlış cevaplardaki esprili yorumlarım için hoşgörünüze sığınıyorum.
* Test ve Ödevlerdeki bazı detaylar burada anlatılmamış olabilir. Bunları kendiniz araştırıp bulmalısınız.
* Birden çok konuya ait içeriği olan ödevler var. Algoritmik açıdan bakıldığında o an en uygun konuya adreslenmiştir.
Dikkat! Bir soruya cevap verdikten sonra geri dönemezsiniz.