이전 글에서 셀 병합 및 병합 해제 메서드인 Merge와 UnMerge에 대해 알아보았습니다. 이번 글에서는 엑셀 메뉴에서 찾기 기능과 동일한 메서드인 Find에 대해서 알아보겠습니다.
VBA 메서드 셀 병합 Merge 및 병합 해제 UnMerge에 대해 알아보기
1. Find 메서드
엑셀 메뉴에 홈-편집-찾기 및 선택-찾기 메뉴가 있습니다. 이 메뉴는 데이터가 입력되어 있는 시트에서 빈 셀을 찾을 때 사용하였습니다. (아래 링크의 이전 글 참조)
엑셀 메뉴 찾기를 클릭하면 [그림 1]과 같은 창이 출력됩니다.
Find 메서드는 이 찾기 메뉴와 동일한 기능을 가집니다. 이 메서드의 매개변수는 [그림 1]의 찾기 메뉴 창 내용과 비교하면서 보시면 거의 동일하다는 것을 아실 수 있습니다. 사용하는 방법은 다음과 같습니다.
Range.Find (찾을 내용, 검색 시작 위치, 찾는 위치, 전체 셀 내용 일치, 검색, 검색 방향, 대/소문자 구분, 전자/반자 구분, 서식)
찾는 위치에 사용되는 내장 상수는 다음과 같습니다.
xlFormula : 수식
xlValues : 값
xlComments : 메모
전체 셀 내용 일치에 사용되는 내장 상수는 다음과 같습니다.
xlWhole : 체크
xlPart : 체크 해제
검색에 사용되는 내장 상수는 다음과 같습니다.
xlByRows : 행
xlByColumns : 열
검색 방향에 사용되는 내장 상수는 다음과 같습니다.
xlNext : 다음
xlPrevious : 이전
대/소문자 구분과 전자/반자 구분에 사용되는 내장 상수는 다음과 같습니다.
True : 체크
False : 체크 해제
2. 예제로 확인
엑셀 시트에 [그림 2]와 같은 판매장부가 있으며 [그림 3]과 같이 단가표가 따로 작성되어 있는 경우에 판매장부에 입력한 물품명에 맞는 단가를 단가표에서 자동으로 찾아와 판매금액이 계산되도록 하는 예제입니다.
[그림 2]의 판매장부 시트에 ActiveX 버튼 하나를 생성하고 Caption에 '계산'이라고 입력합니다.
생성한 버튼을 마우스 왼쪽 버튼으로 더블클릭하여 코드창을 열고 다음과 같이 입력합니다.
Private Sub CommandButton1_Click()
Dim 단가표 As Range
Dim 장부 As Range
Dim 단가 As Range
Dim i As Integer
Dim j As Integer
Set 단가표 = Range("I2").CurrentRegion
i = Range("B2").End(xlDown).Row
For j = 3 To i
Set 단가 = 단가표.Find(what:=Range("B" & j).Value)
Range("C" & j).Value = 단가.Offset(, 1).Value
Next
End Sub
Set 단가표 = Range("I2").CurrentRegion
: I2 셀에 연속된 데이터가 입력된 범위를 단가표 변수에 입력합니다.
i = Range("B2").End(xlDown).Row
: B열에서 데이터가 입력되어 있는 마지막 행의 값을 변수 i에 입력합니다.
Set 단가 = 단가표.Find(what:=Range("B" & j).Value)
: 단가표에 입력된 범위에서 B열 j행의 값과 동일한 값이 있는 셀을 단가에 입력합니다.
Range("C" & j).Value = 단가.Offset(, 1).Value
: 단가에 입력된 셀에서 우측으로 1열 이동한 셀의 값을 C열 j행의 셀에 입력합니다.
위의 코드를 입력하고 계산 버튼을 클릭하시면 판매장부의 단가에 해당 금액이 입력되는 것을 보실 수 있습니다.
'엑셀 > VBA' 카테고리의 다른 글
엑셀 VBA ListView 컨트롤 사용하기 (0) | 2022.03.10 |
---|---|
VBA 날자 계산 내장 함수 - DateAdd, DatePart, DateDiff (1) | 2022.01.19 |
엑셀 VBA ScrollBar & SpinButton 사용하기 (0) | 2022.01.15 |
엑셀 VBA ListBox 컨트롤 사용하기 (0) | 2022.01.13 |
엑셀 VBA 목록 만들기 - ComboBox (1) | 2022.01.11 |