[VB] 콤보박스에서 해당 문자열이 포함되어 있는 아이템을 선택하기
- VB 콤보박스에서 원하는 문자열이 포함되어 있는 아이템을 선택 하려면,
- 콤보박스 아이템 개수(ListCount) 만큼 For 문을 돌려서,
- InStr 함수로 해당 아이템에 원하는 문자열이 포함 되어 있는지 확인한 후,
- ListIndex 로 해당 아이템을 선택 하면 됩니다.
콤보박스에서 원하는 문자열이 포함되어 있는 아이템을 선택하는 예제를 알아보도록 합시다.
상황설명
간단하게 상황을 설명하자면, 아이템들이 들어 있는 콤보박스(ComboBox1)가 있는데, “조회” 버튼(Button1)을 눌렀을 때 그 아이템들 중에 “0363” 이라는 문자열을 포함하는 아이템을 선택하고 싶은 경우입니다.
이를 위해 콤보박스의 속성과 메소드 중 ListIndex
, ListCount
, 그리고 InStr
함수와 직접 만든 함수를 사용하도록 합니다.
전체 예제
아래는 Button1
을 클릭 했을때 실행할 코드 입니다.
Private Sub Button1_Click()
ComboBox1.ListIndex = Find_Item(ComboBox1, "0363")
End Sub
아래는 위 코드에 사용된 Find_Item()
함수의 코드입니다.
Public Function Find_Item(cmb as ComboBox, Str as String)
Dim Count as Double
Dim i as Double
Count = cmb.ListCount
For i = 0 To Count - 1
If InStr(1, cmb.List(i), Str) > 0 Then
Find_Item = i
Exit Function
End If
Next i
Find_Item = -1
End Function
이제 하나씩 알아볼까요?
콤보박스의 아이템 선택하기: ListIndex
ComboBox1.ListIndex = Find_Item(ComboBox1, "0363")
콤보박스의 아이템을 선택하기 위해서는 ListIndex
속성을 사용하면 됩니다. 예를 들어 콤보박스의 3번째 아이템을 선택하기 위해서는 ListIndex
에 2 값을 넣어주면 됩니다(콤보박스의 아이템 순번은 0부터 시작하기 때문입니다).
따라서 우리는 콤보박스에서 원하는 문자열이 포함된 아이템의 순서를 찾아서 반환해주는 함수(Find_Item
)를 만들어서 사용하면 됩니다.
콤보박스의 아이템 찾기
Find_Item
이라는 함수를 만들 것입니다. 파라미터로 두가지를 받습니다. 첫번째는 타겟이 되는 콤보박스를, 두번째는 찾고 싶은 값입니다.
Public Function Find_Item(cmb as ComboBox, Str as String)
Dim Count as Double
Dim i as Double
Count = cmb.ListCount
For i = 0 To Count - 1
If InStr(1, cmb.List(i), Str) > 0 Then
Find_Item = i
Exit Function
End If
Next i
Find_Item = -1
End Function
타겟이 되는 콤보박스의 아이템을 하나씩 For
문을 이용해 검사합니다. 원하는 아이템을 찾으면 해당 아이템의 순번을 반환하면서 함수가 끝나고, 그렇지 않으면 -1을 반환해주면서 콤보박스가 어떤 것도 선택하지 않은 상태로 만들어 줍니다.
콤보박스의 전체 개수 확인하기
Count = cmb.ListCount
콤보박스의 아이템을 검사하기 위해서는 전체 아이템의 개수를 알아야겠죠? Count
라는 변수에 콤보박스의 ListCount
속성을 이용하여 전체 개수를 담아줍니다.
For 문으로 전체 아이템 검사하기
For i = 0 To Count - 1
...
Next i
For
문을 이용해 콤보박스의 아이템을 한땀한땀 검사합니다. 콤보박스 아이템의 순번은 0 부터 시작하고 전체 갯수의 -1 개가 마지막 순번이니 0
에서 Count - 1
까지 아이템들을 검사 합니다.
아이템의 문자열 포함여부 검사하기
If InStr(1, cmb.List(i), Str) > 0 Then
Find_Item = i
Exit Function
End If
각 아이템이 해당 문자열을 포함하는지 확인하기 위해 InStr
함수를 사용합니다. 만약 해당 아이템이 문자열을 포함할 경우(InStr > 0
) i 가 해당 아이템의 순번이 되니 함수 값으로 반환 해주고, 할일을 모두 마친 함수를 종료해줍니다.
Find_Item = -1
만약 해당 조건을 만족 하는 경우가 한번도 없다면? For 문이 종료 되면서 함수는 -1을 반환하면서 종료됩니다.
결론적으로 콤보박스에 원하는 문자열이 포함되어 있는지 콤보박스의 아이템들을 하나씩 검사하고 포함하고 있다면 해당 아이템의 고유번호를 반환해주는 함수를 이용해 해당 콤보박스의 아이템을 선택하는 과정입니다.
복잡해 보이지만 해보면 간단해요. Find_item 함수도 만들어 놓고 이곳저곳에서 막 가져다 쓰면 좋습니다.
댓글 남기기