Varyant Değişken Türü
Bir Değişken Değişkeni, herhangi bir zamandaki verileri (dize, tamsayılar, ondalık sayılar, nesneler vb.) tutabilir. Bir değişken türü bildirmezseniz, değişkeniniz değişken olarak kabul edilecektir.
Bir Variant değişkeni bildirmek için Dim İfadesini kullanırsınız (Boyut'un kısaltması):
1 | Varyant olarak değişkenAdı Dim |
1 | Varyant olarak karartma |
Ardından, bir değişkene değer atamak için eşittir işaretini kullanmanız yeterlidir:
1 | varName = "John" |
1 | rng = Sayfalar(1).Aralık("A1") |
Bunu bir prosedüre koymak şöyle görünür:
12345678910 | Alt strÖrnek()'varyantları bildirVaryant Olarak Dim strNameVaryant Olarak Karartma'değişkenleri doldurstrName = "Fred Smith"Set rng = Sheets(1).Range("A1")'sayfayı doldurrng.Value = strNameAlt Bitiş |
Yukarıdaki kodu çalıştırırsanız, Sayfa 1'deki A1 hücresi “Fred Smith” ile doldurulacaktır.
Yukarıda belirtilen isimlerle, şu sonuca varabiliriz: varName metin içerecek ve nesne sayfası bir çalışma sayfası nesnesi içerir. Ama aslında, herhangi bir veri türü değişkene yönlendirilebilir.
Yukarıda belirtilen değişkenleri aşağıdaki gibi doldurabilirsiniz ve herhangi bir hata oluşmaz.
1 | değişkenAdı = 6 |
1 | nesne Sayfası - "Fred" |
Varyant değişkenleri kullanmak olağandışıdır ve iyi uygulama olarak kabul edilmez. Ancak bazı durumlarda Varyant değişkenleri yararlıdır.
Modül veya Global Düzeyde Değişken Değişken Bildirme
Önceki örnekte, bir prosedür içinde Variant değişkenini bildirdiniz. Bir prosedürle bildirilen değişkenler yalnızca o prosedür içinde kullanılabilir.
Bunun yerine, Varyant değişkenlerini modül veya global düzeyde bildirebilirsiniz.
Modül Seviyesi
Modül seviyesi değişkenler, kod modüllerinin en üstünde şu şekilde bildirilir: loş Beyan.
Bu değişkenler, o kod modülündeki herhangi bir prosedürle kullanılabilir.
Küresel düzey
Küresel düzey değişkenler ayrıca kod modüllerinin en üstünde bildirilir. Ancak, kullanmak yerine loş ifadesini kullanırsınız Halk dize değişkeninin VBA Projeniz boyunca kullanılmaya uygun olduğunu belirten ifade.
1 | Varyant olarak Public strName |
Değişken değişkenini bir modül düzeyinde bildirirseniz ve farklı bir modülde kullanırsanız, bir hata oluşur.
Varyant değişkenini bildirmek için Public anahtar sözcüğünü kullanmış olsaydınız, hata oluşmaz ve prosedür mükemmel şekilde çalışırdı.
Excel'i doldurmak için bir Varyant kullanma
Aşağıdaki prosedürü göz önünde bulundurun:
12345678910111213141516171819 | Alt TestDeğişkeni'ürün adını tutacak bir dize bildirinDize olarak strProduct Dim'ürün miktarını tutmak için bir tamsayı bildiriniQty'yi tamsayı olarak azalt'ürün fiyatını ve toplam fiyatı tutmak için iki katı beyanÇift olarak dblPrice DimÇift olarak dblTotal Dim'değişkenleri doldurstrProduct = "Çok Amaçlı Un"iQty = 3dblPrice = "5.00$"dblToplam = "15,00$"'Excel sayfasını doldurunAralık("A1") = strProductAralık ("A2") = iQtyAralık("A3") = dblFiyatAralık("A4") = dblToplamAlt Bitiş |
Bu kodu çalıştırdığımızda aşağıdaki hata oluşuyor.
Hata Ayıkla'yı tıklayın
Değişken olarak bildirildiği için değişkene dolar işareti koyamazsınız. Çift, ve bu nedenle dize değerlerini depolayamaz.
Bildirmek dblFiyat ve dblToplam Varyantlar olarak, bu da bir veri türüyle sınırlı olmadığınız anlamına gelir.
1 | Varyant olarak Dim dblPrice |
1 | Varyant olarak Dim dblTotal |
Kodu yeniden çalıştırın ve veriler olması gerektiği gibi Excel sayfasında görünecektir.
A4 ve A5'e girilen verilerin daha sonra Excel tarafından otomatik olarak sayılara dönüştürüldüğünü unutmayın.
Dinamik Dizi Bildirmek
Varyant değişkenleri, çalışma zamanında dizinin boyutunun değişmesine izin verdikleri için dinamik bir dizi bildirirken de kullanışlıdır.
BirlikteVaryant Dizisi, dizi boyutunu tanımlamanız gerekmez. Boyut otomatik olarak ayarlanacaktır.
123456789 | Alt VariantArray()Dim arrList() Varyant Olarak'Değerleri TanımlaarrList= Dizi(1, 2, 3, 4)'Değişim değerleriarrList= Dizi(1,2,3,4,5,6)'Çıkış Konumu 4MsgBox arrVar(4)Alt Bitiş |