EXCEL VBA

엑셀 VBA Instr 함수, VBA 문자열 검색의 기본과 예시

카루루1007 2024. 1. 26. 01:52
728x90
반응형

[ 들어가며 ]

 

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 ]이 됩니다.

 

여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.

엑셀 공부하기
VBA 공부하기

728x90
반응형