1. Wprowadzenie do typów danych
Dlaczego tak ważne jest przypisanie zmiennej do właściwego typu danych? Nasz program jak i jego zmienne używają zasoby naszego komputera. Jeśli chcemy zadbać o to, by nasz program szybko i sprawnie działał, dobieramy takie typy danych, które rzeczywiście chcemy wykorzystać. Dla przykładu nie zapisujemy dat i liczb w formie tekstowej, mimo że jest to oczywiście możliwe. Nie korzystamy także np z typu Double do zapisania liczb, jeśli zmiennej chcemy przyporządkować liczby w skali od 1 do 10. W tym celu idealnie sprawdzi się typ Byte.
2. Numeryczne typy danych VBA
Spis numerycznych typów danych w Excelowym VBA oraz ich dokładny opis przedstawiony jest w poniższej tabelce:
Typ danych | Opis | Użycie pamięci w Bajtach | Wartość default | Zakres przyjmowanych wartości |
---|---|---|---|---|
Byte | Typ używany dla liczb naturalnych z zakresu 0-255 | 1B | 0 | Liczby naturalne z zakresu od 0 do 255 |
Integer | Typ używany dla liczb całkowitych o niskich wartościach | 2B | 0 | Liczby całkowite z zakresu -32768 do 32767 |
Long | Typ używany dla liczb całkowitych o wysokich wartościach | 4B | 0 | Liczby całkowite z zakresu od –2,147,483,648 do 2,147,486,647 |
Single | Typ używany do przechowywania liczb rzeczywistych | 4B | 0 | Liczby z zakresu od -3.402823e38 do 1.401298e45 |
Double | Typ używany do przechowywania liczb rzeczywistych | 8B | 0 | Liczby od -1.79769313486232e+308 do -4.94065645841247E-324 dla wartości ujemnych Liczby od 4.94065645841247E-324 do 1.79769313486232e+308 dla wartości dodatnich |
Currency | Typ używany do przechowywania liczb w jednostkach pieniężnych | 8B | 0 | Liczby z zakresu –922,337,203,477.5808 do 922,337,203,685,477.5807 |
Variant (numeryczny) | Typ używany zarówno do przechowywania danych liczbowych jak i znakowych | 16 B | vbEmpty | Liczby z zakresów odpowiadających typom Long oraz Double |
Przypisania zmiennej do konkretnego typu danych dokonujemy w sposób zapisany w poniższym przykładzie. Po zdefiniowaniu zmiennej możemy także bezpośrednio przypisać do niej wartość. Możesz to zrobić w sposób przedstawiony w poniższym przykładzie.
Sub PrzypisanieTypowDanych() 'numeryczne Dim ByteExample As Byte Dim IntExample As Integer Dim LngExample As Long Dim SglExample As Single Dim DblExample As Double Dim CurrExample As Currency Dim VarExample As Variant '(numeryczny) 'Poniżej przykładowe przypisanie wartości do wcześniej opisanych zmiennnych 'numeryczne ByteExample = 255 IntExample = 123 LngExample = 1000000 SglExample = 123.456 DblExample = -4.94065645841247E-324 CurrExample = 123.456 VarExample = -4.94065645841247E-324 End Sub
3. Nienumeryczne typy danych VBA
Typ danych | Opis | Użycie pamięci w Bajtach | Wartość default | Zakres przyjmowanych wartości |
---|---|---|---|---|
Boolean | Typ używany dla wartości logicznych Prawda / Fałsz | 2B | False | Wartość True lub False |
Date | Typ przechowujący datę | 8B | 0 | Daty z zakresy od 100/01/01 do 9999/12/31 |
String (bez zdefiniowanej długości) | Typ używany do przechowywania danych znakowych | 10B + liczba znaków | Ciąg tekstowy o zerowej długości | od 0 do 2mld znaków |
String (o stałej długości) | Typ używany do przechowywania danych znakowych | Liczba znaków | Liczba zdefiniowanych znaków pokazana jako spacje | Od 1 o 65400 znaków |
Variant (znakowy) | Typ używany zarówno do przechowywania danych liczbowych jak i znakowych | 22B + liczba znaków | vbEmpty | Zakres odpowiada zakresowi String bez zdefiniowanej długości, a więc od 0 do 2mld |
Object | Typ używany w przypadku działania na obiektach | 4B | Nothing | Dowolny osadzony obiekt |
Sub PrzypisanieTypowDanych() 'nienumeryczne Dim BlExample As Boolean Dim DtExample As Date Dim StrExample As String '(bez zdefiniowanej długości) Dim StrExample2 As String * 10 '(o stałej długości np 10 znaków) Dim VarExample2 As Variant '(znakowy) Dim ObjExample As Object 'naszym obiektem tym wypadku będzie aktualnie użytkowany arkusz 'Poniżej przykładowe przypisanie wartości do wcześniej opisanych zmiennnych 'nienumeryczne BlExample = True DtExample = Date 'data bieżąca StrExample = "Dowolny tekst" StrExample2 = "10 znaków" VarExample2 = "Dowolny tekst" End Sub
Jak widzimy, typ Variant może być zastosowany zarówno do zapisywania liczb jak i ciągów znaków. Jeśli z góry wiemy, jaką wartość docelową powinny przyjmować nasze zmienne, to używanie tego typu danych nie jest zalecane. Stosujemy go w przypadkach krótkich, pisanych na szybko programów. Typy danych VBA w pakiecie Office, spisane są także w witrynie Microsoft pod tym linkiem.
4. Zadania (Rozwiązanie możesz wpisać w komentarzu)
4.1 Stwórz prosty przykład. Zdefiniuj 4 zmienne liczbowe o różnych typach danych. Sprawdź, czy możesz wykonywać na nich działania arytmetyczne. np a*b+c^d. Wykorzystaj typy Byte, Single, Integer, Double.
4 komentarze “Typy danych w Excel VBA”
a typ Decimal to niby gdzie?
W Excelu 2016 już nie występuje:)
Sub zmienne()
Dim zmienna1 As Byte
Dim zmienna2 As Single
Dim zmienna3 As Integer
Dim zmienna4 As Double
zmienna1 = 2
zmienna2 = 3
zmienna3 = 4
zmienna4 = 5
Cells(1, 1) = zmienna2 + zmienna1 * zmienna3 * zmienna4
End Sub
Option Explicit
Sub TypyDanych3()
Sheets.Add
ActiveSheet.Name = „Arkusz2”
Sheets(„Arkusz2”).Select
Dim btZmienna1 As Byte
Dim sglZmienna2 As Single
Dim intZmienna3 As Integer
Dim dblZmienna4 As Double
btZmienna1 = 2
sglZmienna2 = 10
intZmienna3 = 25
dblZmienna4 = 4000.25
Range(„A1”) = btZmienna1 * sglZmienna2 + intZmienna3 * dblZmienna4
End Sub