[ 들어가며 ]
VBA에서 문자열을 위치를 찾는 함수로
Instr 함수가 있습니다.
이 함수는 문자열에서
검색할 문자열이 발견되면
해당 문자열이 처음으로 나타나는 위치를 반환하고
발견되지 않으면 0을 반환합니다.
[ 기본구문 ]
Instr 함수의 기본 구문은 다음과 같습니다.
InStr([start,] string1, string2[, compare])
먼저 start 는 선택적 매개변수로 생략이 가능합니다.
start의 역할은 검색을 시작할 위치를 지정하는 것입니다.
생략을 하게 되면 1이 사용이 됩니다.
즉, 문자열의 처음부터 검색이 시작됩니다.
string1은 검색 대상 문자열입니다.
string2는 검색할 문자열입니다.
compare는 선택적 매개변수로 생략이 가능합니다.
compare의 매개변수 값으로는 세 가지를 사용할 수 있습니다.
다만, 한가지는 액세스에서 사용이 가능한 것으로 알고 있으므로
그중 두 가지만 소개하겠습니다.
첫 번째는 vbBinaryCompare이며
이는 텍스트 비교 시 대소문자를 구분합니다.
두번째는 vbTextCompare이며
이는 텍스트 비교 시 대소문자를 구분하지 않습니다.
vbBinaryCompare는 숫자 0
vbTextCompare는 숫자 1로 사용이 가능합니다.
compare 매개변수를 생략하면 대소문자를 구분합니다.
[ 문자열에서 특정 문자열 검색 ]
먼저 소스코드는 다음과 같습니다.
Sub Instr()
Dim position As Integer
position = InStr(1, "Hello World", "World")
MsgBox "position은 " & position & "입니다."
End Sub
이 코드를 실행하면 반환값은 [ 7 ]입니다.
아래 코드와 같이 첫 번째 인자를 생략해도
제대로 작동이 됩니다.
Sub Instr()
Dim position As Integer
position = InStr("Hello World", "World")
MsgBox "position은 " & position & "입니다."
End Sub
기본적으로 compare 매개변수를 정하지 않으면
대소문자를 구분합니다.
위 코드를 아래와 같이 World가 아닌
소문자를 사용하여 world로 바꾼다면
반환값은 [ 0 ]이 됩니다.
Sub Instr()
Dim position As Integer
position = InStr("Hello World", "world")
MsgBox "position은 " & position & "입니다."
End Sub
한글을 입력하면 어떻게 되는지 살펴보겠습니다.
Sub Instr()
Dim position As Integer
position = InStr("안녕하세요!! 환영합니다.", "환영")
MsgBox "position은 " & position & "입니다."
End Sub
이 코드를 실행하면 반환값은 [ 9 ]가 됩니다.
영어와 마찬가지로 한글자씩 인식을 합니다.
코드를 조금 수정해서
A1 셀의 텍스트에서 찾는 방법은 다음과 같습니다.
Sub Instr()
Dim position As Integer
position = InStr(Range("A1").Value, "hello")
MsgBox "position은 " & position & "입니다."
End Sub
[ 대소문자를 구분하지 않는 검색 ]
대소문자를 구분하지 않는다면
compare 매개변수로
vbTextCompare를 사용하거나 숫자 1을 사용하면 됩니다.
Sub Instr()
Dim position As Integer
position = InStr(1, "Hello World", "world", vbTextCompare)
MsgBox "position은 " & position & "입니다."
End Sub
Sub Instr()
Dim position As Integer
position = InStr(1, "Hello World", "world", 1)
MsgBox "position은 " & position & "입니다."
End Sub
이 코드를 실행하면 [ 7 ]을 반환합니다.
주의하실 점은 이렇게 네번째 매개변수를 지정하게 되면
반드시 첫번째 매개변수를 작성해주셔야 합니다.
여기서 첫번째 매개변수 [ 1 ]을 생략하면 구문에러가 발생합니다.
[ 문자열에서 특정 문자열을 찾을 수 없는 경우 ]
문자열에서 특정 문자열을 찾을 수 없는 경우에는
[ 0 ]을 반환합니다.
위에서 사용했던 예시를 다시 살펴보겠습니다.
Sub Instr()
Dim position As Integer
position = InStr("Hello World", "world")
MsgBox "position은 " & position & "입니다."
End Sub
위 코드에서 문자열 [ Hello World ]에서
[ world ]를 찾을 수 없으므로
반환값은 [ 0 ]이 됩니다.
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
엑셀 VBA 매크로 실행시간 계산하기, 매크로 실행에 걸리는 시간은?, Timer 함수 (0) | 2024.01.30 |
---|---|
VBA With-End With 구문에 대한 기초 설명, With-End With 사용 방법 (1) | 2024.01.30 |
엑셀 VBA 번역 사용자 정의 함수 만들기, 엑셀 VBA 번역기 직접 만들어 사용하기, 엑셀 영어 번역 (1) | 2024.01.25 |
엑셀 VBA로 중복없는 무작위 숫자 생성하기, 중복없는 랜덤 숫자 생성하기 (0) | 2024.01.12 |
엑셀 VBA 윤년을 확인하는 사용자 정의함수 만들기 (0) | 2024.01.02 |