VBA Türü

Bu makale VBA TypeOf Operatörünün kullanımını gösterecektir.

VBA TypeOf Operator, bir nesnenin türünü belirlemede kullanılır. Bu, bir VBA formundaki kontrolleri etkinleştirmede veya devre dışı bırakmada ya da ne tür bir nesnenin kullanıldığına bağlı olarak kod akışını kontrol etmede faydalı olabilir.

Kodu Kontrol Etmek İçin TypeOf Kullanımı

TypeOf'u, yapılan seçimin ihtiyacımız olan belirli nesne türü olduğundan emin olmak için kullanabiliriz - örneğin, bir aralık seçmek ve ardından neyin seçili olduğunu görmek için bir IF ifadesi kullanmak isteyebiliriz. Bir aralık seçilirse, bize bir aralığın seçildiğini söyleyen bir mesaj alırız, ancak bir aralık seçilmezse farklı bir mesaj alırız.

Çalışma sayfamızdaki bazı hücreleri seçelim.

Şimdi, aşağıdaki makroyu çalıştırırsak, bir Aralık seçtiğimiz söylenecektir.

12345678 Alt TestSeçimi()Nesne Olarak KarartmaTypeOf Seçim Aralık iseMsgBox "Bir aralık seçildi!"BaşkaMsgBox "Başka bir şey seçildi"BitirAlt Bitiş

Ancak, bir aralık seçip başka bir şey seçmezsek - belki bir grafik - ve ardından makroyu çalıştırırsak, farklı bir sonuç alırız!

TypeOf'u Form Denetimlerinde 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 TypeOf 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. Denetim türüyle bir mesaj döndürmek için TypeName işlevini kullandım ve aşağıdakileri kullanarak bir VBA IF Bildirimi kullandım. TypeOf işlevi ne tür bir kontrolün seçildiğini kontrol etmek için ve ardından bu kontrol tipini döndürmek için başka bir mesaj kutusu.

12345678910111213141516171819202122 Alt WhatControlType()Nesne Olarak Dim ctlİçimdeki Her ctl için.KontrollerMsgBox (TürAdı(ctl))'Nesnenin türünü belirlemek için TypeOf işlevini kullanın.TypeOf ctl msforms.TextBox iseMsgBox ("Kontrol bir Metin Kutusudur.")ElseIf TypeOf ctl msforms.ComboBox O zamanMsgBox ("Kontrol bir ComboBox'tır.")ElseIf TypeOf ctl msforms.Label O zamanMsgBox ("Kontrol bir Etikettir.")ElseIf TypeOf ctl msforms.CommandButton O zamanMsgBox ("Kontrol bir Komut Düğmesidir.")ElseIf TypeOf ctl msforms.CheckBox O zamanMsgBox ("Kontrol bir Onay Kutusudur.")ElseIf TypeOf ctl msforms.OptionButton O zamanMsgBox ("Kontrol bir Seçenek/Radyo Düğmesidir.")BaşkaMsgBox ("Nesne başka bir tür kontroldür.")BitirSonraki 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.KontrollerTypeOf ctl msforms.CheckBox isectl.Enabled = YanlışElseIf TypeOf ctl msforms.OptionButton O zamanctl.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.KontrollerTypeOf ctl msforms.CheckBox isectl.Enabled = ctl.Etkin değilElseIf TypeOf ctl msforms.OptionButton O zamanctl.Enabled = ctl.Etkin değilBitirSonraki ctlAlt Bitiş

Şimdi Kontrolleri Etkinleştir düğmesine tıkladığımızda, kontroller devre dışıysa etkinleştirilecekler ve etkinleştirildiyse devre dışı bırakılacaklar. Bu, kullanılarak elde edilir Olumsuz Devre dışı ve etkin arasında geçiş yapmamızı sağlayan operatör.

wave wave wave wave wave