vba data types numeric
이 자습서에서는 VBA에서 사용할 수있는 다양한 숫자 및 비 숫자 데이터 유형을 설명합니다. 또한 데이터 유형 변환에 대해서도 배웁니다. :
우리는 이름, 날짜, 청구서, 상품 가격 등과 같은 많은 유형의 데이터를 매일 접하게됩니다. 이러한 모든 데이터는 특정 유형에 속하며 그 값은 첨부 된 유형과 다를 수 없습니다. 마찬가지로 VBA에는 필요한 작업을 수행하는 데 사용되는 많은 유형의 데이터가 있습니다.
이 자습서에서는 VBA에서 사용되는 다양한 유형의 데이터를 배우고 이러한 데이터가 프로그램 구성에 어떻게 도움이되는지 알아 봅니다. 또한 한 데이터 유형을 다른 데이터 유형으로 변환하는 방법도 살펴볼 것입니다.
=> 여기에서 모든 VBA 자습서 확인
예를 들어 C #의 oops 개념
학습 내용 :
데이터 유형의 범주
데이터 유형은 변수를 사용하여 저장해야하는 데이터 유형을 컴퓨터에 알려줍니다. 데이터 유형은 숫자 및 비 숫자 데이터 유형의 두 가지 범주로 나뉩니다.
숫자 데이터 유형
이러한 유형은 더하기, 빼기 등과 같은 수학적 연산을 수행하는 데 사용됩니다. 예, 백분율 계산, 주가, 수수료, 청구서, 연령 등
VBA에는 아래에 언급 된 7 가지 유형의 숫자 데이터 유형이 있습니다.
숫자 데이터 유형 | |
---|---|
7 | 소수 |
하나 | 바이트 |
두 | 정수 |
삼 | 긴 |
4 | 단일 |
5 | 더블 |
6 | 통화 |
모든 숫자 데이터 유형을 간략하게 살펴 보겠습니다.
# 1) 바이트 데이터 유형
이 데이터 유형에는 1 바이트의 메모리 만 필요합니다. 데이터 유형이 Byte 인 변수는 0에서 255까지의 값을 저장할 수 있습니다. 기본 바이트 값은 0입니다. 음수 값과 255보다 큰 값은 허용되지 않습니다. 잘못된 값을 할당하려고하면 오버플로 오류가 반환됩니다.
구문 : Dim Vname As Byte
여기서 Vname은 변수 이름이고 Byte는 변수의 데이터 유형입니다.
예:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
출력은 다음과 같습니다.
# 2) 정수 데이터 유형
이러한 데이터 유형은 전체 정수 값을 저장하는 데 사용됩니다. 이것은 2 바이트의 메모리를 차지합니다. 정수는 자주 사용되는 데이터 유형 중 하나입니다. 양수 값, 음수 값 및 0도 모두 허용합니다. 범위는 -32,768에서 32,767 사이입니다.
구문 : Dim ignites As Integer
예:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
출력은 다음과 같습니다.
# 3) 긴 데이터 유형
이것은 전체 정수 값도 저장하는 정수 데이터 유형의 대안입니다. 그러나 4 바이트 인 정수 변수보다 더 많은 메모리를 차지합니다. -2,147,483,648에서 2,147,483,648까지의 값 범위가 있습니다.
구문 : 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
정수 변수로 위의 코드를 실행하면 Excel에 1048576 개의 행이 있고 Integer 데이터 형식은 32,767까지만 지원하므로 오버플로 오류가 발생합니다. 데이터 유형이 길면 아래와 같이 적절한 결과가 표시됩니다.
그러나 데이터 유형이 정수이면 오버플로 오류가 발생합니다.
# 4) Decimal 데이터 유형
이것은 정밀도에 사용되는 정확한 숫자 데이터 유형입니다. 이것은 스케일링 인자라고하는 소수점 오른쪽의 총 자릿수와 자릿수입니다.
VBA에서 숫자는 10의 거듭 제곱으로 배율이 조정됩니다. 정확한 값이 필요한 큰 숫자를 조작하는 동안 이러한 유형을 사용하는 것이 적절합니다. 이것은 메모리에서 14 바이트를 차지합니다.
그러나 변수는 10 진수 데이터 유형으로 직접 선언 할 수 없습니다. Decimal을 사용하려면 CDec 변환 기능을 사용해야합니다. Variant 데이터 유형을 사용해야합니다.
이 데이터 유형에는 아래 값 범위가 포함됩니다.
+/- 79,228,162,514,264,337,593,543,950,335 (소수점 없음)
+/- 7.9228162514264337593543950335 (소수점 오른쪽에 소수점 28 자리 포함)
허용되는 가장 작은 0이 아닌 값은 +/- 0.0000000000000000000000000001입니다.
구문 : 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
노트 : TypeName 함수는 데이터 유형 이름을 제공합니다.
산출:
# 5) 단일 데이터 유형
이 데이터 유형은 단 정밀도 부동 소수점으로 숫자를 저장하는 데 사용됩니다. 4 바이트의 메모리를 차지합니다. 기본값은 0이며 10 진수 값을 저장합니다. 아래 구문과 같이 변수를 선언하는 동안 느낌표 (!)를 사용할 수 있습니다.
허용되는 값 범위는 다음과 같습니다.
음수 값의 경우 3.402823E38 ~ -1.401298E-45
양수 값의 경우 1.401298E-45 ~ 3.402823E38.
통사론
Dim VariableName을 단일로
또는
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) 이중 데이터 유형
Double VBA 데이터는 정수와 분수를 모두 보유하는 데 사용할 수 있습니다. Double은 배정 밀도 부동 소수점으로 숫자를 저장하는 데 사용됩니다. 8 바이트의 메모리를 차지하고 값 범위가 있습니다.
-1.79769313486231E308에서 -4.94065645841247E-324 (음수 값)
4.94065645841247E-324에서 1.79769313486232E308 (양수 값)
Single 데이터 유형과 마찬가지로 double은 아래와 같이 Hash (#) 기호를 사용하여 선언 할 수도 있습니다.
통사론
Dim VariableName as Double
또는
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) 통화 데이터 유형
이 데이터 유형은 최대 8 바이트의 스토리지 크기를 사용할 수 있습니다. 이 유형의 데이터는 이미 논의한 단일 및 이중 데이터 유형과 달리 정확한 값을 제공합니다. 이는 금전적 계산에 유용합니다.
통화 데이터 유형은 양수 및 음수 값을 모두 저장할 수 있습니다. 소수점 왼쪽에 15 자리, 오른쪽에 4 자리를 저장할 수 있습니다.
허용 범위는 -922,337,203,685,477.5808에서 922,337,203,685,477.5807까지입니다. @를 사용하여 통화 데이터 유형을 선언 할 수 있습니다.
통사론
Dim VariableName을 통화로
또는
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
산출:
노트 :변수 값이 특정 데이터 유형에 대해 제공된 범위를 초과하면 오버플로 오류가 발생합니다.
범위를 초과하는 바이트 데이터 유형의 간단한 예를 고려하십시오. 바이트 데이터 유형에 대해 음수 값을 입력하면 동일한 오류가 표시됩니다.
숫자가 아닌 데이터 유형
이는 산술 연산자로 조작 할 수없는 데이터입니다. 텍스트, 문자열, 날짜 등으로 구성됩니다. 아래에 VBA에서 지원되는 숫자가 아닌 데이터 유형이 있습니다.
숫자가 아닌 데이터 유형 | |
---|---|
7 | 변형 (문자) |
하나 | 문자열 (고정 길이) |
두 | 문자열 (가변 길이) |
삼 | 데이트 |
4 | 부울 |
5 | 목적 |
6 | 변형 (숫자) |
# 1) 부울 데이터 유형
이 데이터 유형은 2 바이트의 메모리가 필요하며 TRUE 또는 FALSE와 같은 2 개의 값만 저장할 수 있습니다. 즉, 부울 변수는 TRUE 또는 FALSE, 또는 각각 1 또는 0의 값만 가져올 수 있습니다. 부울 변수의 기본값은 False입니다.
구문-Dim Vname As Boolean
예:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
# 2) 날짜 데이터 유형
이 데이터 유형은 날짜 및 시간을 나타내는 데 사용됩니다. 날짜 범위 값은 0100 년 1 월 1 일부터 9999 년 12 월 31 일까지이고 시간 값은 0:00:00부터 23:59:59까지이며 8 바이트의 저장소 크기를 차지합니다.
통사론: 희미하게 날짜로 점화
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
노트 : Now 함수는 현재 날짜와 시간을 제공합니다.
# 3) 문자열 데이터 유형
이 데이터 유형은 문자열 값을 저장하는 데 사용됩니다. 문자열은 일련의 문자로 정의됩니다. 따라서 문자열 데이터 유형을 사용하여 텍스트를 저장할 수 있으며 숫자, 특수 문자, s 및 이벤트 공간을 저장하는 데 사용할 수 있습니다. 문자열 값은 큰 따옴표 ''에 포함되어야합니다.
문자열 데이터 유형에는 두 가지 유형이 있습니다.
# 1) 가변 길이 문자열 : 이 유형은 10 바이트의 스토리지 크기와 문자열 길이 인 문자열에 필요한 메모리를 차지합니다. 범위 값은 0 ~ 약 20 억입니다.
# 2) 고정 길이 문자열 : 문자열 자체의 길이와 동일한 메모리를 차지합니다. 1에서 약 65,400 자까지 가능합니다.
통사론: Dim Vname As String
예:
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
# 4) 개체 데이터 유형
객체는 모든 유형의 객체에 대한 참조를 갖습니다. 즉, 객체 데이터 유형은 문자열, double, 정수 등과 같은 모든 데이터 유형을 가리킬 수 있습니다. 객체 변수는 값을 포함하지 않으며 데이터가있는 주소 만 가리 킵니다. 저장. 4 바이트의 컴퓨터 메모리를 차지합니다. 개체의 기본값은 null 참조입니다.
통사론: 개체로 Dim VName
예:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
현재 시트에서 사용 된 모든 셀이 지워집니다.
# 5) 변형 데이터 유형
이것은 VBA의 범용 데이터 유형이며 모든 종류의 숫자 및 비 숫자 데이터를 허용 할 수 있습니다. Variant 데이터 유형은 데이터로 작업하는 동안 더 많은 유연성을 제공합니다. Variant 데이터 유형은 다른 데이터 유형보다 더 많은 스토리지 크기를 사용합니다. 데이터 유형을 언급하지 않으면 VBA는이를 Variant 변수로 처리합니다.
Variant 데이터 유형에는 두 가지 유형이 있습니다.
# 1) 변형 (숫자) : 여기에는 Double 범위까지 모든 숫자 값이 포함될 수 있습니다. 변형 번호는 16 바이트의 스토리지 크기를 차지합니다.
# 2) 변형 (문자) : 여기에는 가변 길이 문자열과 동일한 범위가 포함될 수 있습니다. Variant 문자는 22 바이트 + 문자열 길이를 차지합니다 (64 비트 시스템에서는 24 바이트).
통사론
Dim VName As Variant
또는
Dim VName
예:
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
데이터 유형 변환
때때로 변수의 데이터 유형을 우리의 사용 사례에서 특정한 것으로 변환해야 할 필요가 있습니다.
C ++ 용 설정 이클립스
예: 일반적으로 문자열 인 셀에서 값을 검색하므로 산술 연산을 수행하기 전에 숫자 데이터 유형으로 변환해야합니다. 이를 달성하기 위해 VBA에는 지원되는 모든 데이터 유형에 대한 유형 변환 기능이 있습니다.
# 1) CBool
이 함수는 표현식을 부울 데이터 유형으로 변환하는 데 사용됩니다. 식이 0을 반환하면 CBool은 0이 아닌 값인 False를 반환하고 CBool은 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
위 코드는 결과를 False, True, False, True로 반환합니다.
직접 시도해보고, ActiveX 컨트롤 명령 버튼을 그리고, 오른쪽 클릭-> 코드보기 및 위의 코드를 삽입 할 수 있습니다. 명령 버튼을 클릭하면 결과가 표시됩니다. (디자인 모드 비활성화)
산출
# 2) CByte
이 함수는 표현식을 Byte 데이터 유형으로 변환하는 데 사용됩니다. 변환 후 범위가 Byte에 허용되는 범위를 초과하면 Overflow 오류가 발생합니다.
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
노트 : 값을 255.56. 컴파일러는 오버플로 오류를 반환합니다.
# 3) CCur
이 함수는 표현식을 통화 데이터 유형으로 변환합니다.
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
이 함수는 문자열을 날짜로 변환합니다. Excel 셀에서 날짜 값을 문자열로 검색 한 다음 추가 작업을 수행하기 전에이를 변환해야한다고 가정합니다. 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
CDbl 함수는 표현식을 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
이 함수는 숫자 값을 Decimal로 변환합니다.
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 함수는 값을 정수 데이터 유형으로 변환합니다.
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
이 함수는 값을 Long 데이터 유형으로 변환하는 데 사용됩니다.
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
이 함수는 값을 단일 데이터 유형으로 변환합니다.
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
이 함수는 숫자 값을 문자열 데이터 유형으로 변환하는 데 사용됩니다.
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
이 함수는 표현식을 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
자주 묻는 질문
Q # 1) VBA의 기본 데이터 유형은 무엇입니까?
대답: Variant가 기본값입니다. 변수의 데이터 유형을 정의하지 않으면 VBA는이를 변형 변수 / 객체로 취급합니다.
Q # 2) 유형 불일치 오류는 무엇입니까?
대답: 이 오류는 변수를 하나의 데이터 유형으로 선언하고 부적절한 값을 할당 할 때 트리거됩니다.
예: 변수를 정수로 선언하고 텍스트 값을 입력하십시오.
Q # 3) 오버 플로우 오류는 어떻게 수정합니까?
대답: 특정 데이터 유형이 허용되는 범위를 참조하고 허용 된 범위 내의 값을 입력해야합니다.
예: Byte는 0에서 255까지만 허용합니다. 음수 값이나 255보다 큰 v 값을 입력하면 오버플로 오류가 발생합니다.
결론
이 튜토리얼에서는 VBA 데이터 유형, 즉 7 개의 숫자 및 7 개의 비 숫자 데이터 유형에 대해 배웠습니다. 또한 예제를 통해 데이터 유형을 한 유형에서 다른 유형으로 변환하는 방법에 대해서도 논의했습니다.
=> VBA 교육 자습서의 A-Z를 보려면 여기를 확인하십시오.