문자열 비교 결과를 나타내는 Variant(Integer)를 반환합니다.
구문은 다음과 같습니다.
Syntax
StrComp(string1, string2, [ compare ])
string1 : 필수입니다. 유효한 문자열 표현식입니다.
string2 : 필수입니다. 유효한 문자열 표현식입니다.
compare : 선택적. 문자열 비교의 형식을 지정합니다. 비교 인수가 Null이면 오류가 발생합니다. 비교를 생략하면 Option Compare 설정에 따라 비교 유형이 결정됩니다.
Option Compare
아래 링크는 Option Compare 구문 도움말입니다.
Option Compare statement (VBA)
Office VBA reference topic
learn.microsoft.com
Option Compare문은 생략하면 기본적으로 Option Compare Binary를 사용합니다.(대/소문자 구분)
Option Compare는 최상단에 위치해야 합니다.
Option Explicit
Option Compare Text ' Option Compare문을 모듈의 맨 처음에 위치시킵니다.
Sub CompareStrings()
Dim str1 As String
Dim str2 As String
str1 = "apple"
str2 = "Apple"
If str1 = str2 Then
MsgBox "문자열은 동일합니다."
Else
MsgBox "문자열은 동일하지 않습니다."
End If
End Sub
도움말에 있는대로 비교인수에 Null을 사용해 봤습니다.
Sub CompareUsingStrComp()
Dim string1 As String
Dim string2 As String
Dim result As Integer
string1 = "Hello"
string2 = "hello"
' Null 인수로 인해 오류 발생하는 경우
result = StrComp(string1, string2, Null) ' 비교 인수를 Null로 지정함, 오류가 발생
End Sub
아래 그림과 같이 오류가 납니다.
Compare를 생략하니 다음과 같은 결과가 나왔습니다.
반환값은 다음과 같습니다.
-1은 string1이 string2보다 작다는 뜻입니다. 즉 "Hello" < "hello"가 됩니다.
0은 두 문자열이 같음을 의미합니다. 즉 "Hello" = "hello"가 됩니다.(대/소문자 무시)
1은 string1이 string2보다 크다는 의미입니다.
비교 인수 설정은 다음과 같습니다.
다음은 간단한 예제입니다.
Sub CompareStringsUsingvbBinaryCompare()
Dim string1 As String
Dim string2 As String
Dim result As Integer
string1 = "Hello"
string2 = "hello"
' StrComp 함수에서 비교 방식으로 vbBinaryCompare을 사용
result = StrComp(string1, string2, vbBinaryCompare)
If result = 0 Then
Debug.Print "vbBinaryCompare - 동일한 문자열입니다!"
ElseIf result < 0 Then
Debug.Print "vbBinaryCompare - string1이 string2보다 작습니다!"
Else
Debug.Print "vbBinaryCompare - string1이 string2보다 큽니다!"
End If
End Sub
Sub CompareStringsUsingvbTextCompare()
Dim string1 As String
Dim string2 As String
Dim result As Integer
string1 = "Hello"
string2 = "hello"
' StrComp 함수에서 비교 방식으로 vbBinaryCompare을 사용
result = StrComp(string1, string2, vbTextCompare)
If result = 0 Then
Debug.Print "vbTextCompare - 동일한 문자열입니다!"
ElseIf result < 0 Then
Debug.Print "vbTextCompare - string1이 string2보다 작습니다!"
Else
Debug.Print "vbTextCompare - string1이 string2보다 큽니다!"
End If
End Sub
vbBinaryCompare
Sub CompareStringsUsingVbBinaryCompare()
Dim stringA As String, stringB As String, stringC As String, stringD As String
stringA = "Hello"
stringB = "hello"
stringC = "Hello"
stringD = "World"
' 비교 결과 출력
PrintComparisonResult stringA, stringB, vbBinaryCompare
PrintComparisonResult stringA, stringC, vbBinaryCompare
PrintComparisonResult stringA, stringD, vbBinaryCompare
End Sub
Sub PrintComparisonResult(ByVal string1 As String, ByVal string2 As String, ByVal compareMode As VbCompareMethod)
Dim result As Integer
result = StrComp(string1, string2, compareMode)
Select Case result
Case 0
Debug.Print string1 & " <=> " & string2 & " : 동일한 문자열 (vbBinaryCompare)"
Case -1
Debug.Print string1 & " < " & string2 & " : string1이 string2보다 작습니다 (vbBinaryCompare)"
Case 1
Debug.Print string1 & " > " & string2 & " : string1이 string2보다 큽니다 (vbBinaryCompare)"
End Select
End Sub
vbTextCompare
Sub CompareStringsUsingVbTextCompare()
Dim stringA As String, stringB As String, stringC As String, stringD As String
stringA = "apple"
stringB = "Apple"
stringC = "banana"
stringD = "Banana"
' 비교 결과 출력
PrintComparisonResult stringA, stringB, vbTextCompare
PrintComparisonResult stringA, stringC, vbTextCompare
PrintComparisonResult stringC, stringD, vbTextCompare
End Sub
Sub PrintComparisonResult(ByVal string1 As String, ByVal string2 As String, ByVal compareMode As VbCompareMethod)
Dim result As Integer
result = StrComp(string1, string2, compareMode)
Select Case result
Case 0
Debug.Print string1 & " <=> " & string2 & " : 동일한 문자열 (vbTextCompare)"
Case -1
Debug.Print string1 & " < " & string2 & " : string1이 string2보다 작습니다 (vbTextCompare)"
Case 1
Debug.Print string1 & " > " & string2 & " : string1이 string2보다 큽니다 (vbTextCompare)"
End Select
End Sub
'VBA 라이브러리' 카테고리의 다른 글
Space 함수 (0) | 2023.07.22 |
---|---|
StrConv 함수 (0) | 2023.07.22 |
ColorConstants (0) | 2023.07.18 |
IIf 함수 (0) | 2023.07.15 |
InputBox 함수 (0) | 2023.07.15 |