VBA 문자열 비교 – StrComp
VBA에서는 StrComp 함수를 사용하여 두 문자열을 비교할 수 있습니다. 이 튜토리얼에서는 이 함수를 사용하여 여러가지 케이스에 대해 비교하는 방법을 배웁니다.
VBA like 연산자를 사용하여 정확하지 않은 일치 항목을 비교하는 방법을 배우려면 여기를 클릭하세요: VBA Like Operator.
비교 연산자를 사용하는 방법을 배우려면 여기를 클릭하세요: VBA 비교 연산자 – 같지 않음 등
StrComp 함수를 사용하여 두 문자열 비교하기
StrComp 함수는 두 개의 문자열과 비교 방법을 인수로 받습니다. 비교 방법에는 3가지가 있습니다:
- vbBinaryCompare – 두 문자열을 이진(대소문자 구분)으로 비교합니다;
- vbTextCompare – 두 문자열을 텍스트로 비교합니다(대소문자 구분 없음);
- vbDatabaseCompare – 이 옵션은 Microsoft Access에서만 사용할 수 있습니다.
기본값으로 이 함수는 vbBinaryCompare를 사용합니다. 매개변수를 생략하면 함수는 대소문자를 구분합니다.
이 함수는 다음과 같은 결과를 반환합니다:
- 0 – 문자열이 동일한 경우;
- -1 – 문자열 1이 문자열 2보다 작은 경우;
- 1 – 문자열 1이 문자열 2보다 큰 경우;
- Null – 문자열 중 하나가 비어 있는 경우.
다음은 예제 코드입니다:
Dim intResult As Integer
intResult = StrComp("Computer", "Computer")
이 예제에서는 기본 비교 방법(vbBinaryCompare)을 사용하여 문자열 “Computer”와 “Computer”가 동일한지 확인하려고 합니다. 함수의 결과는 intResult 변수에 있습니다. 이미지1에서 볼 수 있듯이 두 문자열은 모두 동일하므로 intResult의 값은 0입니다.
이미지 1. VBA에서 vbBinaryCompare로 StrComp 함수 사용하기
StrComp 함수 사용하기(vbBinaryCompare & vbTextCompare)
vbBinaryCompare 와 vbTextCompare 사용의 차이점은 다음과 같습니다. vbBinaryCompare 는 각 문자에 대해 이진 번호가 있으므로, 이 방법을 사용하면 대문자와 소문자가 다른 문자입니다. 반면에 vbTextCompare 는 “S”와 “s”를 같은 문자로 간주합니다. 함수를 대소문자를 구분하지 않게 만들려면 세 번째 인수를 vbTextCompare 로 설정해야 합니다. 다음은 코드를 참고해 주세요:
Dim intResult1 As Integer
Dim intResult2 As Integer
intResult1 = StrComp("Computer", "CompuTer")
intResult2 = StrComp("Computer", "CompuTer", vbTextCompare)
두가지 옵션을 사용하여 문자열 “Computer”와 “CompuTer”를 비교하려고 합니다.
intResult1 변수에서는 vbBinaryCompare 를 사용하여 값을 얻고, intResult2 변수에서는 vbTextCompare 를 사용하여 값을 얻습니다. 이 두 변수의 값을 확인할 수 있습니다:
Image 2. vbBinaryCompare와 vbTextCompare 옵션으로 StrComp 함수 사용하기
intResult1의 값은 1이며, 이는 vbBinaryCompare 를 사용했을 경우 두 문자열이 다르다는 것을 의미합니다. vbTextCompare 의 경우 이 두 문자열은 동일하므로 intResult2의 값은 0입니다.