Bu makale, VBA TypeName İşlevinin kullanımını gösterecektir.
VBA TipAdı İşlev, bir hücrede depolanan verilerin türünü veya seçilen bir nesnenin türünü (örneğin, bir çalışma sayfası, aralık veya hücre veya bir form üzerindeki bir denetim) belirlemede kullanılır.
Hücredeki Veri Türünü Belirleme
Bir hücrede veri türünün olup olmadığını belirlemek için TypeName işlevini Cells Özelliği ile kullanabiliriz.
123 | Alt TestCellDataType()MsgBox "" & Cells(3, 2).Address & " içindeki veri türü " & TypeName(Cells(3, 2).Value)Alt Bitiş |
Yukarıdaki kodu aşağıdaki çalışma sayfası ile çalıştırırsak, mesaj kutusu bize hücrede ne tür veri olduğunu söyleyecektir.
Seçilen Nesnenin Tipinin Belirlenmesi
Bir çalışma sayfasında ne tür bir Nesnenin seçildiğini belirlemek için TypeName'i de kullanabiliriz - örneğin bir Aralık veya Grafik.
123 | Alt TestSeçimi()MsgBox "Bir "Seçtiniz" & TypeName(Seçim)Alt Bitiş |
Veya bir grafik seçersek:
Daha da derine inebilir ve grafikteki nesneleri seçebiliriz ve makro, seçtiklerimizi döndürecektir.
Tüm bunlar, kodun akışını kontrol etmek veya doğru nesne türünün seçildiğinden veya bir hücreye doğru veri türünün girildiğinden emin olmak için test ederek hataların oluşmasını önlemek için VBA projemizi oluştururken en yararlı olabilir. .
Form Denetimlerinde TypeName kullanma
VBA, kullanıcının doldurabileceği ve çeşitli şekillerde kullanılmak üzere verileri koda döndürebileceği etkileşimli formlar oluşturmamızı sağlar. Bir formda kullanılan denetimlerin türünü belirlemek için TypeName operatörünü kullanabiliriz.
Aşağıdaki örnekte, üzerinde çeşitli kontroller bulunan bir kullanıcı formu oluşturdum - birkaç Metin Kutusu, bir Birleşik Kutu, 2 seçenek düğmesi, 2 onay kutusu ve 3 komut düğmesi.
Aşağıdaki kodu kullanarak, formdaki tüm kontroller arasında döngü yaparak formda ne tür kontrollerin olduğunu belirleyebilirim. Ne tür bir kontrolün seçildiğini kontrol etmek için bir VBA IF Deyimi ile kontrol tipine sahip bir mesaj döndürmek için TypeName işlevini kullandım.
123456 | Alt WhatControlType()Nesne Olarak Dim ctlİçimdeki Her ctl için.KontrollerMsgBox "Kontrol bir " & TypeName(ctl)Sonraki ctlAlt Bitiş |
Bu tür bir kod, kontrolleri etkinleştirmek veya devre dışı bırakmak istiyorsak çok yararlı olabilir. Aşağıdaki kodda form ilk açıldığında seçenek butonları ve onay kutuları devre dışı bırakılmıştır.
123456789101112 | Özel Alt UserForm_Initialize()Nesne Olarak Dim ctlİçimdeki Her ctl için.KontrollerTypeName(ctl) = "CheckBox" isectl.Enabled = YanlışElseIf TypeName(ctl) = "OptionButton" Sonractl.Enabled = YanlışBaşkactl.Etkin = DoğruBitirSonraki ctlAlt Bitiş |
Seçenek düğmelerini ve onay kutularını etkinleştirmek için, Kontrolleri Etkinleştir düğmesinin arkasına biraz daha kod yazdım.
12345678910 | Özel Alt cmdEnable_Click()Nesne Olarak Dim ctlİçimdeki Her ctl için.KontrollerTypeName(ctl) = "CheckBox" isectl.Enabled = ctl.Etkin değilElseIf TypeName(ctl) = "OptionButton" Sonractl.Enabled = ctl.Etkin değilBitirSonraki ctlAlt Bitiş |
Bu koddaki işlevsellik, VBA TypeOf Operator kullanılarak da oluşturulabilir.