vba data types numeric
Bu eğitim, VBA'da bulunan çeşitli sayısal ve sayısal olmayan veri türlerini açıklamaktadır. Veri Türü Dönüşümlerini de öğreneceğiz :
Her gün isim, tarih, senetler, bir emtia fiyatı gibi birçok veri türüne rastlıyoruz. Tüm bu veriler belirli bir türe aittir ve değerleri ona bağlı olan türden ertelenemez. Benzer şekilde, VBA'da gerekli eylemi gerçekleştirmek için kullanılan birçok veri türü vardır.
Bu eğitimde, VBA'da kullanılan farklı veri türlerini öğrenecek ve bunların programımızı düzenlemeye nasıl yardımcı olacağını göreceğiz. Ayrıca bir veri türünü başka bir veri türüne dönüştürmeye de bakacağız.
=> TÜM VBA Öğreticilerini Buradan Kontrol Edin
Ne öğreneceksin:
- Veri Türlerinin Kategorileri
- Sonuç
Veri Türlerinin Kategorileri
Veri türü, bilgisayara bir değişken kullanılarak depolanması gereken veri türünü söyler. Veri türleri 2 kategoriye ayrılır, yani Sayısal ve Sayısal Olmayan Veri Türleri
Sayısal Veri Türleri
Bu türler, Toplama, Çıkarma vb. Matematiksel işlemleri gerçekleştirmek için kullanılır. Misal, yüzde hesaplama, hisse fiyatı, ücretler, faturalar, yaş vb.
VBA'da aşağıda belirtildiği gibi 7 tür sayısal veri türü vardır.
Sayısal Veri Türü | |
---|---|
7 | Ondalık |
1 | Bayt |
iki | Tamsayı |
3 | Uzun |
4 | Tek |
5 | Çift |
6 | Para birimi |
Tüm sayısal veri türlerine kısaca bir göz atalım.
# 1) Bayt Veri Türü
Bu veri türü yalnızca bir bayt bellek gerektirir. Veri türü Byte olan değişkenler, 0 ile 255 arasındaki değerleri saklayabilir. Varsayılan bayt değeri 0'dır. Negatif değerlere ve 255'ten büyük değerlere izin verilmez. Geçersiz değerler atamayı denemeniz durumunda, bir Taşma hatası döndürülür.
Sözdizimi: Dim Vname As Byte
Burada Vname bir değişken adıdır ve Byte değişkenin veri türüdür.
Misal:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Çıktı aşağıda verilmiştir
# 2) Tam Sayı Veri Türü
Bu veri türleri tamsayı değerini saklamak için kullanılır. Bu, 2 bayt bellek kaplar. Tam sayı, sık kullanılan veri türlerinden biridir. Hem pozitif değerleri, hem negatif değerleri hem de sıfırı kabul ederler. -32.768 ile 32.767 arasında bir aralığı vardır.
Sözdizimi: Dim, Tamsayı Olarak Tutuşur
Misal:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Çıktı aşağıda verilmiştir
# 3) Uzun Veri Türü
Bu, aynı zamanda bir tamsayı değerini de depolayan bir tamsayı veri türüne bir alternatiftir. Bununla birlikte, 4 bayt olan bir tamsayı değişkeninden daha fazla bellek kaplar. -2.147.483.648 ile 2.147.483.648 arasında bir değer aralığına sahiptir.
Sözdizimi: Dim vname As Long
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Yukarıdaki kodu bir tamsayı değişkeniyle çalıştırırsanız, bir taşma hatası alırsınız çünkü Excel'de 1048576 satır vardır ve Tamsayı veri türü yalnızca 32.767'ye kadar destekler. Veri türü uzun olduğunda aşağıda gösterildiği gibi uygun bir sonuç gösterilir.
Ancak veri türü bir tam sayı olduğunda, bir taşma hatası atılır.
# 4) Ondalık Veri Türü
Bu, kesinliği için kullanılan tam bir sayısal veri türüdür. Bu, ölçekleme faktörü olarak adlandırılan ondalık noktanın sağındaki toplam basamak sayısı ve basamak sayısıdır.
VBA'da sayılar 10 kuvvetiyle ölçeklenir. Kesin bir değer gerektiren büyük sayıları işlerken bu türleri kullanmak uygundur. Bu, bellekte 14 bayt yer kaplar.
Ancak değişkenler doğrudan bir ondalık veri türü olarak bildirilemez. Ondalık'ı kullanmak için, CDec dönüştürme işlevini kullanmanız gerekir. Bir Variant veri türü kullanmanız gerekir.
Bu veri türü, aşağıdaki değer aralığını içerir.
+/- 79,228,162,514,264,337,593,543,950,335 ondalık nokta olmadan
Ondalık basamağın sağında 28 ondalık basamakla +/- 7.9228162514264337593543950335.
Kabul edilen en küçük sıfır olmayan değer +/- 0.0000000000000000000000000001'dir.
Sözdizimi: Dim, değişken olarak tutuşur
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Not: TypeName işlevi, veri türü adını verir
Çıktı:
# 5) Tek Veri Türü
Bu veri türü, tek duyarlıklı kayan noktalı sayıları depolamak için kullanılır. 4 bayt hafıza kaplar. Varsayılan değer 0'dır ve ondalık değerleri depolar. Aşağıdaki söz diziminde gösterildiği gibi bir değişken bildirirken Ünlem işaretini (!) Kullanabilirsiniz.
Kabul edilen değer aralığı:
3.402823E38 ila -1.401298E-45 negatif değerler için
1.401298E-45 ila 3.402823E38 pozitif değerler için.
Sözdizimi
Dim VariableName as Single
veya
Dim DeğişkenAdı!
Sub SingleDataTypeTest() Dim SingleVal1 As Single Dim SingleVal2! SingleVal1 = 123 SingleVal2 = 333.44 MsgBox ('Data type of SingleVal1 is ' & TypeName(SingleVal1) & ' with value ' & SingleVal1 & ' and datatype of SingleVal2 is ' & TypeName(SingleVal2) & ' with value ' & SingleVal2) End Sub
# 6) Çift Veri Türü
Double VBA verileri hem tam sayıları hem de kesirleri tutmak için kullanılabilir. Çift, çift hassas kayan noktalı sayıları depolamak için kullanılır. 8 baytlık bellek kaplar ve bir dizi değere sahiptir.
-1.79769313486231E308 ila -4.94065645841247E-324 negatif değerler için
Pozitif değerler için 4.94065645841247E-324 ila 1.79769313486232E308
Tek veri türü gibi, double, aşağıda gösterildiği gibi Hash (#) olan bir sembol kullanılarak da bildirilebilir.
Sözdizimi
Dim VariableName, Double
veya
Dim DeğişkenAdı #
Sub DoubleDataTypeTest() Dim douValue As Double Dim douVal1# douValue = 100.21 douVal1 = 333.44 MsgBox ('Data type of douValue is ' & TypeName(douValue) & ' with value ' & douValue & ' and datatype of douVal1 is ' & TypeName(douVal1) & ' with value ' & douVal1) End Sub
# 7) Para Birimi Veri Türü
Bu veri türü, 8 bayta kadar depolama boyutu alabilir. Bu tür veriler, daha önce tartıştığımız tek ve çift veri türlerinin aksine tam değer verir. Bunlar parasal hesaplamalar için kullanışlıdır.
Para birimi veri türü hem pozitif hem de negatif değerleri depolayabilir. Bunlar, ondalık basamağın solunda 15 basamak ve sağında 4 basamak saklayabilir.
İzin verilen aralık -922,337,203,685,477,5808 ile 922,337,203,685,477,5807'dir. Para Birimi veri türlerini bildirmek için @ kullanabilirsiniz.
Sözdizimi
7zip kullanarak torrent dosyaları nasıl çıkarılır
Para Birimi Olarak Dim Değişken Adı
veya
Dim DeğişkenAdı @
Sub CurrencyDataTypeTest() Dim val1 As Currency Dim Val2@ val1 = 123 Val2 = 333.44 MsgBox ('Data type of Val1 is ' & TypeName(val1) &” with value “ &val1 & ' and datatype of Val2 is ' & TypeName(Val2) & “ with value “ &val2) End Sub
Çıktı:
Not :Değişkenin değeri, belirli bir veri türü için sağlanan aralığı aşarsa, bir taşma hatası atılır.
Bayt veri türünün aralığını aşan basit örneğini düşünün. Bayt veri tipi için negatif değerler girerseniz aynı hata görüntülenecektir.
Sayısal Olmayan Veri Türleri
Bunlar, aritmetik operatörler tarafından değiştirilemeyen verilerdir. Metin, Dize, Tarih vb. İçerirler. Aşağıda verilen, VBA'da desteklenen sayısal olmayan veri türleridir.
Sayısal Olmayan Veri Türü | |
---|---|
7 | Varyant (Karakterler) |
1 | Dize (Sabit Uzunluk) |
iki | Dize (Değişken Uzunluk) |
3 | Tarih |
4 | Boole |
5 | Nesne |
6 | Değişken (Sayılar) |
# 1) Boolean Veri Türü
Bu veri türü 2 bayt bellek gerektirir ve yalnızca 2 değer, yani DOĞRU veya YANLIŞ saklayabilir. Başka bir deyişle, Boole değişkeni yalnızca TRUE veya FALSE değerini, alternatif olarak sırasıyla 1 veya 0 değerini alabilir. Bir Boolean değişkeninin varsayılan değeri False'dır.
Sözdizimi - Dim Vname As Boolean
Misal:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Tarih Veri Türü
Bu veri türü, tarih ve saati temsil etmek için kullanılır. 1 Ocak 0100'den 31 Aralık 9999'a kadar tarih aralığı değerlerine ve 0:00:00 ile 23:59:59 arasındaki zaman değerlerine sahiptir ve 8 baytlık depolama boyutunu kaplar.
Sözdizimi: Dim, Tarih Olarak Tutuşur
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Not: Şimdi işlevi geçerli tarih ve saati verir
# 3) Dize Veri Türü
Bu veri türü, dize değerini saklamak için kullanılır. Dize, bir karakter dizisi olarak tanımlanır. Böylece metni saklamak için Dize veri türünü kullanabilir ve sayıları, özel karakterleri, s ve olay boşluklarını depolamak için kullanılabilir. Bir dize değeri çift tırnak işareti '' içine yerleştirilmelidir.
2 tür String veri türü vardır.
# 1) Değişken Uzunlukta Dize: Bu tür, 10 baytlık depolama boyutu artı dizi uzunluğu olan dizge için gereken belleği kaplar. 0 ila yaklaşık 2 milyar arasında bir aralık değerine sahiptirler.
# 2) Sabit Uzunlukta Dize: İpin uzunluğuna eşit hafızayı kaplar. 1 ile yaklaşık 65.400 karakter arasında değişebilir
Sözdizimi: Dize Olarak Dim Vname
Misal:
bir dizi nasıl yapılır
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Nesne Veri Türü
Nesne, herhangi bir türden bir nesneye referansa sahip olacaktır, yani Nesne veri türü, dize, çift, tamsayı vb. Gibi herhangi bir veri türünü işaret edebilir. Nesne değişkeni değeri içermez, yalnızca verilerin bulunduğu adresi gösterir. saklanmış. 4 bayt bilgisayar belleğini kaplar. Bir nesnenin varsayılan değeri boş bir referanstır.
Sözdizimi: Dim VName As Object
Misal:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Bu, geçerli sayfadaki tüm kullanılmış hücreleri temizleyecektir.
# 5) Varyant Veri Türü
Bu, VBA'nın evrensel veri türüdür, sayısal ve sayısal olmayan her türlü veriyi kabul edebilir. Varyant veri türü, verilerle çalışırken daha fazla esneklik sağlar. Varyant veri türü, diğer veri türlerinden daha fazla depolama boyutu kullanır. Bir veri türünden bahsetmezseniz, VBA bunu bir Değişken değişken olarak ele alır.
2 tür Varyant veri türü vardır
# 1) Varyant (sayılar): Bu, Double aralığına kadar herhangi bir sayısal değer içerebilir. Varyant numaraları, 16 bayt depolama boyutunu kaplar.
# 2) Varyant (karakterler): Bu, değişken uzunluklu Dize ile aynı aralığı içerebilir. Variant karakterler 22 bayt + dizi uzunluğunu (64 bit sistemlerde 24 bayt) kaplar
Sözdizimi
Değişken Olarak Dim VName
veya
Dim VName
Misal:
Sub VariantDataTypeTest() Dim EmpName As Variant Dim DOB Dim Salary As Variant EmpName = 'Jofn kim' DOB = #10/3/2020# Salary = 55000 MsgBox EmpName & ' ' & DOB & ' ' & Salary End Sub
Veri Türü Dönüşümü
Bazen bir değişkenin veri türünü kullanım durumumuzda belirli bir şeye dönüştürmek gerekli hale gelir.
Misal: Genellikle bir dize olan bir hücreden bir değer alırsınız ve bu nedenle herhangi bir aritmetik işlem gerçekleştirmeden önce bunu sayısal bir veri türüne dönüştürmeniz gerekir. Bu VBA'ya ulaşmak için desteklenen tüm veri türleri için tür dönüştürme işlevleri vardır.
# 1) CBool
Bu işlev, bir ifadeyi Boolean veri türüne dönüştürmek için kullanılır. İfade sıfır döndürürse, CBool False, sıfır olmayan herhangi bir değer döndürür, CBool True döndürür.
Sub CBooleanTest() Dim val1 As Integer Dim strval2 As String val1 = 0 MsgBox CBool(val1) val1 = 177 MsgBox CBool(val1) strval2 = 'A' MsgBox CBool(strval2 = 'B') MsgBox CBool(strval2 'B') End Sub
Yukarıdaki kod, False, True, False, True olarak sonuçları döndürecektir.
Kendiniz deneyebilir, bir ActiveX kontrol komut düğmesi çizebilir, Sağ tıklayın -> Kodu görüntüle ve yukarıdaki kodu ekleyebilirsiniz. Komut düğmesine tıklayın ve sonuç görüntülenecektir. (Tasarım modunu devre dışı bırakın)
Çıktı
# 2) CByte
Bu işlev, bir ifadeyi Byte veri türüne dönüştürmek için kullanılır. Dönüşümden sonra, aralık Bayt için izin verilen aralığı aşarsa, bir Taşma hatası verileceğini unutmayın.
Sub cbyteTest() Dim val1 As Double Dim val2 val1 = 125.5678 val2 = CByte(val1) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
Not: Değeri 255.56 olarak verirseniz. Complier bir taşma hatası döndürecektir
# 3) CCur
Bu işlev, bir ifadeyi Para Birimi veri türüne dönüştürür.
Sub ccurTest() Dim val1 As Integer Dim val2 val1 = 5544 val2 = CCur(val1 / 5) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
# 4) CDate
Bu işlev bir dizgeyi Tarihe dönüştürür. Date değerini bir Excel hücresinden String olarak aldığınızı varsayalım, daha sonra herhangi bir işlem yapmadan önce bu değeri dönüştürmeniz gerekir. CDate kullanabilirsiniz.
Sub CDateTest() Dim val1, val2, val3 As String Dim Res1, Res2, Res3 val1 = '12:21' val2 = '23/09 12:12' val3 = 'Sep 23, 2020' Res1 = CDate(val1) Res2 = CDate(val2) Res3 = CDate(val3) MsgBox 'Date of val1 is : ' & Res1 & ' Date of val2 is : ' & Res2 & ' Date of val3 is ' & Res3 End Sub
# 5) CDbl
CDbl işlevi, bir ifadeyi Double veri türüne dönüştürmek için kullanılır.
Sub CDblTest() Dim val1 As String Dim val2 As Integer Dim Res1 val1 = 10000.12345 val2 = 1222.222 Res1 = CDbl(val1) Res2 = CDbl(val2) MsgBox 'Double value after converting String : ' & Res1 & ' Double value after converting Integer : ' & Res2 End Sub
# 6) CDec
Bu işlev, sayısal bir değeri Ondalık sayıya dönüştürür.
Sub CDecTest() Dim Val1 As Currency Dim Result Val1 = 1234566.56366 Result = CDec(Val1) ‘Result is 1234566.5637 MsgBox 'Decimal Data Type Value : ' & Result End Sub
# 7) CInt
CInt işlevi, bir değeri Tamsayı Veri Türüne dönüştürür.
Sub CintTest() Dim Val1 As Double Dim Result Val1 = 2345.5678 Result = CInt(Val1) 'Result is 2346 MsgBox 'Integer value of converting is : ' & Result & ' and datatype of Result is ' & TypeName(Result) End Sub
# 8) CLng
Bu işlev, bir değeri Uzun Veri Türüne dönüştürmek için kullanılır
Sub cLngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 45457.35 Val2 = 45457.65 Res1 = CLng(Val1) Res2 = CLng(Val2) MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 9) CSng
Bu işlev, bir değeri Tek Veri Türüne dönüştürür
Sub cSngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 75.3421115 Val2 = 75.3421555 Res1 = CSng(Val1) ' Result is 75.34211. Res2 = CSng(Val2) ' Result is 75.34216. MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
# 10) CStr
Bu işlev, sayısal bir değeri bir dizi veri türüne dönüştürmek için kullanılır.
Sub CStrTest() Dim Val1 As Double Dim Result Val1 = 123.123 Result = CStr(Val1) 'Result will be 123.123 MsgBox 'Result of Val1 is ' & Val1 End Sub
# 11) CVar
Bu işlev, bir ifadeyi bir Variant veri türüne dönüştürür.
Sub CVarTest() Dim Val1 As Integer Dim Result Val1 = 1234 Result = CVar(Val1 & 1.12) ' Result will be 12341.12 MsgBox 'Result is ' & Result End Sub
Sıkça Sorulan Sorular
S # 1) VBA'daki varsayılan veri türü nedir?
Cevap: Varyant, varsayılan olandır. Bir değişkenin veri türünü tanımlamazsanız, VBA onu bir değişken değişken / nesne olarak değerlendirir.
S # 2) Tür Uyuşmazlığı hatası nedir?
Cevap: Bu hata, bir değişkeni tek bir veri türü olarak ilan ettiğinizde ve uygun olmayan bir değer atadığınızda tetiklenecektir.
Misal: Bir değişkeni Tamsayı olarak bildirin ve bir metin değeri girin.
S # 3) Bir taşma hatasını nasıl düzeltirim?
Cevap: Belirli veri türüne izin verilen aralığa başvurmanız ve izin verilen aralıkta bir değer girdiğinizden emin olmanız gerekir.
Misal: Bayt yalnızca 0 ila 255'e izin verir, herhangi bir negatif değer veya 255'ten fazla v değeri girerseniz, bu durumda bir taşma hatasıyla karşılaşırsınız.
Sonuç
Bu eğiticide, VBA Veri Türleri, yani 7 sayısal ve 7 sayısal olmayan veri türü hakkında bilgi sahibi olduk. Ayrıca örneklerle bir veri türünün bir türden diğerine nasıl dönüştürüleceğini tartıştık.
=> VBA Eğitim Öğreticilerinin A-Z'sini Görmek İçin Burayı Kontrol Edin
Önerilen Kaynaklar
- Excel VBA Eğitimi - Excel'de VBA'ya Giriş
- C ++ Veri Türleri
- Python Veri Türleri
- C # Veri Türleri ve Örneklerle Değişkenler
- C # Type Casting: Örneklerle Açık ve Örtük Veri Dönüştürme
- Dizi Veri Türleri - int Array, Double array, Array of Strings vb.
- MySQL Veri Türleri | MySQL'de Farklı Veri Türleri Nelerdir?