본문 바로가기
언어 참조

Variant 이해하기

2023. 7. 28.

이 글은 도움말을 번역한 내용입니다.

상수, 변수 또는 인수를 선언할 때 데이터 유형을 지정하지 않으면 Variant 데이터 유형이 자동으로 지정됩니다.

Sub Example()
    Dim myVariable
    myVariable = 10
    Debug.Print "Data type of myVariable: " & VarType(myVariable)
    
    myVariable = "Hello"
    Debug.Print "Data type of myVariable: " & VarType(myVariable)
End Sub

2=Integer,8=String입니다.

Variant 데이터 유형으로 선언된 변수는 문자열, 날짜, 시간, 부울 또는 숫자 값을 포함할 수 있으며, 변수에 포함된 값을 자동으로 변환할 수 있습니다. 숫자 변수 값에는 16바이트의 메모리가 필요하며(대규모 프로시저나 복잡한 모듈에서만 중요함), 다른 유형의 명시적으로 입력된 변수보다 액세스 속도가 느립니다. 상수에 Variant 데이터 유형을 사용하는 경우는 거의 없습니다. 문자열 Variant 값에는 22바이트의 메모리가 필요합니다.

Sub ExampleAllDataTypesAsVariant()
    Dim myVariant As Variant
    
    ' Integer
    myVariant = 10
    Debug.Print "Integer value: " & myVariant
    
    ' Long
    myVariant = 1000000
    Debug.Print "Long value: " & myVariant
    
    ' Single
    myVariant = 3.14
    Debug.Print "Single value: " & myVariant
    
    ' Double
    myVariant = 123.456
    Debug.Print "Double value: " & myVariant
    
    ' Currency
    myVariant = 99.99
    Debug.Print "Currency value: " & myVariant
    
    ' Date
    myVariant = Date
    Debug.Print "Date value: " & myVariant
    
    ' String
    myVariant = "Hello, VBA!"
    Debug.Print "String value: " & myVariant
    
    ' Object
    Set myVariant = CreateObject("Scripting.Dictionary")
    Debug.Print "Object value: " & TypeName(myVariant)
    
    ' Boolean
    myVariant = True
    Debug.Print "Boolean value: " & myVariant
    
    ' Null
    myVariant = Null
    Debug.Print "Null value: " & myVariant
    
    ' Empty
    myVariant = Empty
    Debug.Print "Empty value: " & myVariant
    
    ' Array
    myVariant = Array(1, 2, 3)
    Debug.Print "Array value: " & Join(myVariant, ", ")
End Sub



변수 또는 인수의 데이터 유형을 지정한 다음 잘못된 데이터 유형을 사용하면 데이터 유형 오류가 발생합니다. 데이터 유형 오류를 방지하려면 암시적 변수(Variant 데이터 유형)만 사용하거나 모든 변수를 명시적으로 선언하고 데이터 유형을 지정하세요. 후자의 방법을 선호합니다.

Sub ExplicitDeclarationExample()
    Dim myNumber As Integer ' 정수형 변수 선언
    Dim myString As String ' 문자열 변수 선언
    
    ' 올바른 데이터 형식으로 값 할당
    myNumber = 10
    myString = "Hello"
    
    ' 변수에 맞지 않는 데이터 형식으로 값 할당 - 데이터 형식 오류 발생!
    myNumber = "Hello" ' 에러 발생: Type mismatch
    myString = 20 ' 에러 발생: Type mismatch
End Sub

도움말 출처

Understanding Variants (VBA)

Office VBA reference topic

learn.microsoft.com

'언어 참조' 카테고리의 다른 글

변수의 수명 이해  (0) 2023.07.29
범위와 가시성 이해하기  (0) 2023.07.28
상수 선언 및 사용  (0) 2023.07.28
데이터 타입을 효율적으로 사용하기  (0) 2023.07.28
변수 선언  (0) 2023.07.28