vba data types numeric
W tym samouczku wyjaśniono różne numeryczne i nieliczbowe typy danych dostępne w języku VBA. Dowiemy się również o konwersjach typów danych :
Codziennie spotykamy wiele typów danych, takich jak imię i nazwisko, data, rachunki, cena towaru itp. Wszystkie te dane należą do określonego typu i ich wartości nie mogą różnić się od typu, do którego są dołączone. Podobnie VBA ma wiele typów danych, które są używane do wykonywania wymaganej akcji.
W tym samouczku nauczymy się różnych typów danych używanych w VBA i zobaczymy, jak pomogą one w organizacji naszego programu. Przyjrzymy się również konwersji jednego typu danych na inny typ danych.
=> Sprawdź WSZYSTKIE samouczki VBA tutaj
Czego się nauczysz:
- Kategorie typów danych
- Wniosek
Kategorie typów danych
Typ danych informuje komputer o rodzaju danych, które mają być przechowywane, za pomocą zmiennej. Typy danych są podzielone na 2 kategorie, tj. Numeryczne i nieliczbowe typy danych
Numeryczne typy danych
Te typy są używane do wykonywania operacji matematycznych, takich jak dodawanie, odejmowanie itp. Przykład, obliczenia procentowe, cena akcji, opłaty, rachunki, wiek itp.
najlepszy bloker wyskakujących okienek Google Chrome
W VBA istnieje 7 typów liczbowych typów danych, jak wspomniano poniżej.
Numeryczny typ danych | |
---|---|
7 | Dziesiętny |
jeden | Bajt |
dwa | Liczba całkowita |
3 | Długo |
4 | Pojedynczy |
5 | Podwójnie |
6 | Waluta |
Przyjrzyjmy się pokrótce wszystkim liczbowym typom danych.
# 1) Bajtowy typ danych
Ten typ danych wymaga tylko jednego bajtu pamięci. Zmienne o typie danych Byte mogą przechowywać wartości od 0 do 255. Domyślna wartość bajtu to 0. Wartości ujemne i wartości większe niż 255 są niedozwolone. W przypadku próby przypisania nieprawidłowych wartości zostanie zwrócony błąd przepełnienia.
Składnia: Dim Vname As Byte
Tutaj Vname to nazwa zmiennej, a Byte to typ danych zmiennej.
Przykład:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
Dane wyjściowe podano poniżej
# 2) Integer Data Type
Te typy danych są używane do przechowywania całej wartości całkowitej. Zajmuje to 2 bajty pamięci. Liczba całkowita jest jednym z często używanych typów danych. Akceptują zarówno wartości dodatnie, jak i ujemne, a także zero. Ich zakres wynosi od -32 768 do 32767.
Składnia: Dim ignites As Integer
Przykład:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
Dane wyjściowe podano poniżej
# 3) Długi typ danych
Jest to alternatywa dla typu danych typu integer, który również przechowuje całą wartość całkowitą. Jednak zajmuje więcej pamięci niż zmienna całkowita, która ma 4 bajty. Ma zakres wartości od -2 147 483 648 do 2 147 483 648
Składnia: 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
Jeśli wykonasz powyższy kod ze zmienną całkowitą, pojawi się błąd przepełnienia, ponieważ w programie Excel jest 1048576 wierszy, a typ danych Integer obsługuje tylko do 32767. Jak pokazano poniżej, gdy typ danych jest długi, wyświetlany jest odpowiedni wynik.
Ale jeśli typ danych jest liczbą całkowitą, generowany jest błąd przepełnienia.
# 4) Typ danych dziesiętnych
To jest dokładny numeryczny typ danych używany do precyzji. To jest całkowita liczba cyfr i liczba cyfr po prawej stronie przecinka dziesiętnego nazywana współczynnikiem skalowania.
W języku VBA liczby są skalowane z potęgą 10. Należy używać tych typów podczas manipulowania dużymi liczbami, które wymagają precyzyjnej wartości. Zajmuje to 14 bajtów pamięci.
Ale zmiennych nie można bezpośrednio zadeklarować jako dziesiętnego typu danych. Aby użyć opcji Decimal, musisz użyć funkcji konwersji CDec. Musisz użyć typu danych Variant.
Ten typ danych zawiera poniższy zakres wartości.
+/- 79.228.162.514.264.337.593.543.950.335 bez przecinka
+/- 7,9228162514264337593543950335 z 28 miejscami po przecinku po przecinku.
Najmniejsza akceptowana wartość niezerowa to +/- 0,0000000000000000000000000001.
Składnia: Dim ignites As variant
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
Uwaga: Funkcja TypeName poda nazwę typu danych
Wynik:
# 5) Pojedynczy typ danych
Ten typ danych służy do przechowywania liczb za pomocą liczb zmiennoprzecinkowych o pojedynczej precyzji. Zajmuje 4 bajty pamięci. Wartość domyślna to 0 i przechowuje wartości dziesiętne. Możesz użyć wykrzyknika (!) Podczas deklarowania zmiennej, jak pokazano na poniższej składni.
Dopuszczalny zakres wartości to:
3.402823E38 do -1.401298E-45 dla wartości ujemnych
1,401298E-45 do 3,402823E38 dla wartości dodatnich.
Składnia
Dim VariableName as Single
lub
Dim VariableName!
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) Podwójny typ danych
Dane Double VBA mogą być używane do przechowywania zarówno liczb całkowitych, jak i ułamków. Double służy do przechowywania liczb za pomocą zmiennoprzecinkowej podwójnej precyzji. Zajmuje 8 bajtów pamięci i ma szereg wartości.
Od -1,79769313486231E308 do -4,94065645841247E-324 dla wartości ujemnych
4.94065645841247E-324 do 1.79769313486232E308 dla wartości dodatnich
Podobnie jak typ danych Single, double można również zadeklarować za pomocą symbolu, którym jest Hash (#), jak pokazano poniżej.
Składnia
Dim VariableName as Double
lub
Dim VariableName #
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) Typ danych waluty
Ten typ danych może zająć do 8 bajtów pamięci. Ten typ danych daje dokładną wartość, w przeciwieństwie do pojedynczych i podwójnych typów danych, o których już mówiliśmy, są zaokrąglane. Są one przydatne do obliczeń pieniężnych.
Typ danych waluty może przechowywać zarówno wartości dodatnie, jak i ujemne. Mogą one zawierać 15 cyfr po lewej stronie przecinka i 4 cyfry po prawej.
Dozwolony zakres to -922337203685477,5808 do 922337203685477,5807. Możesz użyć @, aby zadeklarować typy danych Waluta.
Składnia
Dim VariableName as Currency
lub
Dim VariableName @
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
Wynik:
Uwaga :Jeśli wartość zmiennej przekracza podany zakres dla określonego typu danych, zostanie zgłoszony błąd przepełnienia.
Rozważmy prosty przykład bajtowego typu danych przekraczającego jego zakres. Ten sam błąd zostanie wyświetlony, jeśli wprowadzisz wartości ujemne dla typu danych bajtowych.
Nieliczbowe typy danych
Są to dane, którymi nie można manipulować za pomocą operatorów arytmetycznych. Obejmują one tekst, ciąg znaków, datę itp. Poniżej podano nieliczbowe typy danych obsługiwane w języku VBA.
Nieliczbowy typ danych | |
---|---|
7 | Wariant (znaki) |
jeden | Ciąg (o stałej długości) |
dwa | Ciąg (o zmiennej długości) |
3 | Data |
4 | Boolean |
5 | Obiekt |
6 | Wariant (liczby) |
# 1) Boolean Data Type
Ten typ danych wymaga 2 bajtów pamięci i może przechowywać tylko 2 wartości, tj. TRUE lub FALSE. Innymi słowy, zmienna boolowska może uzyskać tylko wartość TRUE lub FALSE, alternatywnie odpowiednio 1 lub 0. Domyślną wartością zmiennej logicznej jest False.
Składnia - Dim Vname As Boolean
Przykład:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) Data Typ danych
Ten typ danych służy do reprezentowania daty i godziny. Ma wartości zakresu dat od 1 stycznia 0100 do 31 grudnia 9999 i wartości czasu od 0:00:00 do 23:59:59 i zajmuje 8 bajtów pamięci.
Składnia: Dim zapala się jako Date
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
Uwaga: Funkcja Now podaje aktualną datę i godzinę
# 3) Typ danych ciągu
Ten typ danych służy do przechowywania wartości ciągu. Ciąg jest zdefiniowany jako ciąg znaków. Możesz więc użyć typu danych String do przechowywania tekstu i może być używany do przechowywania liczb, znaków specjalnych, s i przestrzeni zdarzeń. Wartość ciągu należy umieścić w podwójnym cudzysłowie „”.
Istnieją 2 typy danych typu String.
jak otwierać pliki swf w chrome
# 1) Ciąg o zmiennej długości: Ten typ zajmuje 10 bajtów rozmiaru magazynu plus pamięć wymagana dla ciągu, który jest długością łańcucha. Mają wartość w zakresie od 0 do około 2 miliardów.
# 2) Ciąg o stałej długości: Zajmuje pamięć równą długości samego ciągu. Może mieć od 1 do około 65 400 znaków
Składnia: Dim Vname As String
Przykład:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) Typ danych obiektu
Obiekt będzie miał odniesienie do obiektu dowolnego typu, tj. Typ danych Object może wskazywać na dowolny typ danych, np. String, double, integer, itp. Zmienna Object nie będzie zawierała wartości, wskaże tylko adres, pod którym dane są przechowywane. Zajmuje 4 bajty pamięci komputera. Domyślną wartością obiektu jest odwołanie o wartości null.
Składnia: Dim VName As Object
Przykład:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
Spowoduje to wyczyszczenie wszystkich używanych komórek w bieżącym arkuszu.
# 5) Typ danych wariantu
Jest to uniwersalny typ danych VBA, może akceptować dowolne dane numeryczne i nieliczbowe. Odmiana typu danych zapewnia większą elastyczność podczas pracy z danymi. Odmienny typ danych zajmuje więcej miejsca niż jakikolwiek inny typ danych. Jeśli nie podasz typu danych, VBA potraktuje to jako zmienną typu Variant.
Istnieją 2 typy typów danych Variant
# 1) Wariant (liczby): Może zawierać dowolną wartość liczbową do zakresu Double. Numery wariantów zajmują 16 bajtów pamięci.
# 2) Wariant (znaki): Może zawierać ten sam zakres, co w przypadku łańcucha o zmiennej długości. Znaki wariantu zajmują 22 bajty + długość łańcucha (24 bajty w systemach 64-bitowych)
Składnia
Dim VName As Variant
lub
Dim VName
Przykład:
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
Konwersja typu danych
Czasami zachodzi potrzeba przekonwertowania typu danych zmiennej na coś konkretnego w naszym przypadku użycia.
Przykład: Pobierasz wartość z komórki, która zwykle jest ciągiem, dlatego przed wykonaniem jakiejkolwiek operacji arytmetycznej musisz przekonwertować ją na numeryczny typ danych. Aby to osiągnąć, VBA ma funkcje konwersji typów dla wszystkich obsługiwanych typów danych.
# 1) CBool
Ta funkcja służy do konwersji wyrażenia na typ danych Boolean. Jeśli wyrażenie zwróci zero, to CBool zwróci False, dowolną wartość niezerową, CBool zwróci True.
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
Powyższy kod zwróci wyniki jako False, True, False, True.
Możesz spróbować samemu narysować przycisk polecenia kontrolki ActiveX, Kliknij prawym przyciskiem myszy -> Wyświetl kod i wstaw powyższy kod. Kliknij przycisk Polecenie, a wynik zostanie wyświetlony. (Wyłącz tryb projektowania)
Wynik
# 2) CByte
Ta funkcja służy do konwersji wyrażenia na typ danych Byte. Pamiętaj, że po konwersji, jeśli zakres przekracza zakres dozwolony dla bajtu, zostanie zgłoszony błąd przepełnienia.
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
Uwaga: Jeśli podasz wartość jako 255,56. Complier zwróci błąd przepełnienia
# 3) CCur
Ta funkcja skonwertuje wyrażenie na typ danych Waluta.
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
Ta funkcja przekształci ciąg w datę. Załóżmy, że pobierasz wartość Date jako String z komórki programu Excel, a następnie musisz ją przekonwertować przed wykonaniem jakichkolwiek dalszych działań. Możesz użyć CDate.
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
Funkcja CDbl służy do konwersji wyrażenia na typ danych Double.
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
Ta funkcja przekształci wartość liczbową na dziesiętną.
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
Funkcja CInt skonwertuje wartość na typ danych Integer.
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
Ta funkcja służy do konwersji wartości na długi typ danych
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
Ta funkcja skonwertuje wartość na pojedynczy typ danych
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
Ta funkcja służy do konwersji wartości numerycznej na łańcuchowy typ danych.
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
Ta funkcja przekształci wyrażenie na typ danych Variant.
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
Często Zadawane Pytania
P # 1) Jaki jest domyślny typ danych w VBA?
Odpowiedź: Wariant jest wariantem domyślnym. Jeśli nie zdefiniujesz typu danych zmiennej, VBA traktuje ją jako zmienną / obiekt wariantowy.
P # 2) Co to jest błąd niezgodności typu?
Odpowiedź: Ten błąd zostanie wywołany, gdy zadeklarujesz zmienną jako jeden typ danych i przypiszesz niewłaściwą wartość.
Przykład: Zadeklaruj zmienną jako liczbę całkowitą i wprowadź wartość tekstową.
P # 3) Jak naprawić błąd przepełnienia?
Odpowiedź: Musisz odwołać się do zakresu, w którym jest dozwolony określony typ danych, i upewnić się, że wprowadzasz wartość z dozwolonego zakresu.
ile użytecznych hostów jest dostępnych przy adresie IP klasy C z domyślną maską podsieci?
Przykład: Byte dopuszcza tylko od 0 do 255, jeśli wprowadzisz jakąkolwiek wartość ujemną lub wartość v większą niż 255, wystąpi błąd przepełnienia.
Wniosek
W tym samouczku poznaliśmy typy danych VBA, tj. 7 liczbowych i 7 nienumerycznych typów danych. Omówiliśmy również, jak przekonwertować typ danych z jednego typu na inny z przykładami.
=> Sprawdź tutaj, aby zobaczyć samouczki szkoleniowe od A do Z VBA
rekomendowane lektury
- Samouczek Excel VBA - Wprowadzenie do VBA w programie Excel
- Typy danych C ++
- Typy danych w Pythonie
- C # typy danych i zmienne z przykładami
- Rzutowanie typu C #: jawna i niejawna konwersja danych z przykładem
- Typy danych tablic - int Array, Double array, Array of Strings itp.
- Typy danych MySQL | Jakie są różne typy danych w MySQL