변수 또는 프로퍼티에 표현식 값을 할당합니다.
Syntax
[ Let ] varname = expression
Let : Let 키워드의 명시적 사용은 스타일의 문제이지만 일반적으로 생략됩니다.선택 사항입니다.
varname : 변수 또는 속성의 이름입니다. 표준 변수 명명 규칙을 따릅니다.필수입니다.
expression : 변수 또는 속성에 할당된 값입니다.필수입니다.
값 표현식은 변수와 호환되는 데이터 유형인 경우에만 변수 또는 속성에 할당할 수 있습니다. 숫자 변수에 문자열 표현식을 할당할 수 없으며, 문자열 변수에 숫자 표현식을 할당할 수 없습니다. 그렇게 하면 컴파일 시 오류가 발생합니다.
Sub ExampleProcedure()
Dim numericVariable As Integer
Dim stringVariable As String
' 데이터 유형이 호환되는 경우
numericVariable = 10
stringVariable = "Hello"
' 데이터 유형이 호환되지 않는 경우 (오류 발생)
numericVariable = "Hello" ' 오류: String을 Integer에 할당할 수 없음
stringVariable = 20 ' 오류: Integer를 String에 할당할 수 없음
End Sub
Variant 변수는 문자열 또는 숫자 표현식에 할당할 수 있습니다. 하지만 그 반대가 항상 맞는 것은 아닙니다. 문자열 변수에는 Null을 제외한 모든 변형을 할당할 수 있지만, 숫자 변수에는 값이 숫자로 해석될 수 있는 변수만 할당할 수 있습니다. Variant를 숫자로 변환할 수 있는지 확인하려면 IsNumeric 함수를 사용하세요.
Sub ExampleProcedure()
Dim stringValue As String
' 문자열 변수에 다양한 데이터 유형 할당
stringValue = "Hello" ' 문자열 할당
Debug.Print "String Value: " & stringValue ' 출력: "String Value: Hello"
stringValue = 123 ' 숫자 할당 (자동으로 문자열로 변환)
Debug.Print "String Value: " & stringValue ' 출력: "String Value: 123"
stringValue = 3.14 ' 실수(숫자) 할당 (자동으로 문자열로 변환)
Debug.Print "String Value: " & stringValue ' 출력: "String Value: 3.14"
stringValue = True ' 불리언 값 할당 (자동으로 문자열로 변환)
Debug.Print "String Value: " & stringValue ' 출력: "String Value: True"
stringValue = Date ' 날짜 값 할당 (자동으로 문자열로 변환)
Debug.Print "String Value: " & stringValue ' 출력: "String Value: 날짜 값"
' 초기화 없이 빈 문자열로 초기화 가능
stringValue = ""
Debug.Print "String Value: " & stringValue ' 출력: "String Value: "
stringValue = Null ' 에러
Debug.Print "String Value: " & stringValue
End Sub
IsNull을 이용하여 에러를 수정한 코드입니다.
Sub ExampleProcedure()
Dim stringValue As String
' 문자열 변수에 다양한 데이터 유형 할당
stringValue = "Hello" ' 문자열 할당
Debug.Print "String Value: " & stringValue ' 출력: "String Value: Hello"
stringValue = 123 ' 숫자 할당 (자동으로 문자열로 변환)
Debug.Print "String Value: " & stringValue ' 출력: "String Value: 123"
stringValue = 3.14 ' 실수(숫자) 할당 (자동으로 문자열로 변환)
Debug.Print "String Value: " & stringValue ' 출력: "String Value: 3.14"
stringValue = True ' 불리언 값 할당 (자동으로 문자열로 변환)
Debug.Print "String Value: " & stringValue ' 출력: "String Value: True"
stringValue = Date ' 날짜 값 할당 (자동으로 문자열로 변환)
Debug.Print "String Value: " & stringValue ' 출력: "String Value: 날짜 값"
' 문자열 변수에 Null 할당 (Null은 문자열로 변환되지 않음)
Dim variantValue As Variant
variantValue = Null
If IsNull(variantValue) Then
stringValue = "" ' Null을 빈 문자열로 변환하여 문자열 변수에 할당
Else
stringValue = CStr(variantValue) ' Variant 변수를 사용하여 Null을 문자열로 변환
End If
Debug.Print "String Value: " & stringValue ' 출력: "String Value: "
End Sub
Sub ExampleProcedure()
Dim numericVariable As Integer
Dim stringValue As String
Dim variantValue As Variant
' 숫자 변수에 숫자로 해석 가능한 값을 할당
numericVariable = 10
Debug.Print "Numeric Value: " & numericVariable ' 출력: "Numeric Value: 10"
stringValue = "123"
' IsNumeric 함수를 사용하여 문자열이 숫자로 해석 가능한지 확인
If IsNumeric(stringValue) Then
numericVariable = CInt(stringValue) ' 문자열을 정수로 변환하여 숫자 변수에 할당
Debug.Print "Numeric Value: " & numericVariable ' 출력: "Numeric Value: 123"
Else
Debug.Print "The value cannot be converted to a numeric type."
End If
variantValue = "3.14"
' IsNumeric 함수를 사용하여 Variant 값이 숫자로 해석 가능한지 확인
If IsNumeric(variantValue) Then
numericVariable = CInt(variantValue) ' Variant 값을 정수로 변환하여 숫자 변수에 할당
Debug.Print "Numeric Value: " & numericVariable ' 출력: "Numeric Value: 3"
Else
Debug.Print "The value cannot be converted to a numeric type."
End If
variantValue = "ABC"
' IsNumeric 함수를 사용하여 Variant 값이 숫자로 해석 가능한지 확인
If IsNumeric(variantValue) Then
numericVariable = CInt(variantValue) ' 오류: Variant 값이 숫자로 변환될 수 없음
Else
Debug.Print "The value cannot be converted to a numeric type."
End If
End Sub
한 숫자 유형의 표현식을 다른 숫자 유형의 변수에 할당하면 표현식의 값이 결과 변수의 숫자 유형으로 강제로 적용됩니다.
Sub ExampleProcedure()
Dim intValue As Integer
Dim doubleValue As Double
' 정수형 변수 intValue에 실수형 값을 할당
doubleValue = 3.14
intValue = doubleValue
Debug.Print "intValue: " & intValue ' 출력: intValue: 3
' 실수형 변수 doubleValue에 정수형 값을 할당
intValue = 5
doubleValue = intValue
Debug.Print "doubleValue: " & doubleValue ' 출력: doubleValue: 5
' 정수형 변수 intValue에 문자열 값을 할당 (자동으로 변환)
intValue = "10"
Debug.Print "intValue: " & intValue ' 출력: intValue: 10
' 실수형 변수 doubleValue에 문자열 값을 할당 (자동으로 변환)
doubleValue = "3.14"
Debug.Print "doubleValue: " & doubleValue ' 출력: doubleValue: 3.14
End Sub
Let 문은 두 변수가 동일한 사용자 정의 유형인 경우에만 한 레코드 변수를 다른 레코드 변수에 할당하는 데 사용할 수 있습니다.
Type Person
Name As String
Age As Integer
End Type
Sub ExampleProcedure()
Dim person1 As Person
Dim person2 As Person
' 레코드 변수 person1에 값 할당
person1.Name = "John"
person1.Age = 30
' 레코드 변수 person1의 값으로 레코드 변수 person2를 할당 (Let 문 사용)
Let person2 = person1
' person2는 person1과 동일한 값을 가짐
Debug.Print "person2 Name: " & person2.Name ' 출력: "person2 Name: John"
Debug.Print "person2 Age: " & person2.Age ' 출력: "person2 Age: 30"
End Sub
마지막으로 Let이 있는 코드와 없는 코드를 비교하는 것으로 이 글을 마무리합니다.
Sub ExampleWithLet()
Dim myVar As Integer
Let myVar = 10
MsgBox "myVar의 값은 " & myVar & " 입니다."
End Sub
Sub ExampleWithoutLet()
Dim myVar As Integer
myVar = 10
MsgBox "myVar의 값은 " & myVar & " 입니다."
End Sub
Type Person
Name As String
Age As Integer
Email As String
End Type
Sub ExampleProcedureWithLet()
Dim person1 As Person ' user-defined type variable
Dim person2 As Person ' user-defined type variable
' Assign values to fields of person1 using the Let statement (optional)
Let person1.Name = "John"
Let person1.Age = 30
Let person1.Email = "john@example.com"
' Use the Let statement to assign person1 to person2
Let person2 = person1
' Now person2 contains the same values as person1
Debug.Print "person2 Name: " & person2.Name ' Output: "person2 Name: John"
Debug.Print "person2 Age: " & person2.Age ' Output: "person2 Age: 30"
Debug.Print "person2 Email: " & person2.Email ' Output: "person2 Email: john@example.com"
End Sub
Type Person
Name As String
Age As Integer
Email As String
End Type
Sub ExampleProcedureWithoutLet()
Dim person1 As Person ' user-defined type variable
Dim person2 As Person ' user-defined type variable
' Assign values to fields of person1 without using the Let statement
person1.Name = "John"
person1.Age = 30
person1.Email = "john@example.com"
' Directly assign person1 to person2 (without using the Let statement)
person2 = person1
' Now person2 contains the same values as person1
Debug.Print "person2 Name: " & person2.Name ' Output: "person2 Name: John"
Debug.Print "person2 Age: " & person2.Age ' Output: "person2 Age: 30"
Debug.Print "person2 Email: " & person2.Email ' Output: "person2 Email: john@example.com"
End Sub
도움말 출처
Let statement (VBA)
Office VBA reference topic
learn.microsoft.com