엑셀 VBA를 이용한 자료 검색 팝업 박스 출력

엑셀 VBA를 이용해 입력된 데이터베이스에서 특정 자료를 검색하여 필요한 정보를 팝업창으로 보여주는 코드입니다.
이 코드를 제작한 이유는 1,000개를 관리하여야 할 물품이 있다고 가정하고 이 물품을 담당하는 사람이나 지점, 물품의 제조 연월일, 배송일, 유통 기간 등을 미리 입력한 후 특정 물건에 대한 자료가 필요할 경우 검색하여 가독성을 증가시킬 수 있기 때문입니다(실제 사용한 내용은 개인정보를 위해 모두 삭제).

1. 데이터베이스 생성
2. 자료 검색 색상으로 표시
3. VBA를 이용한 메시지 박스 출력
4. VBA를 이용한 오류 박스 출력

엑셀 기본자료 시트 생성

근로자 검색

설명 : 검색 창과 자료 입력

엑셀 시트 생성 후 원하시는 데이터베이스를 입력하고 위 이미지에 나온 것과 같이 정보 출력 버튼을 미리 만들고, 근무자 검색창 옆 검색어 입력 공간을 생성한 후 조건부 서식에서 검색창과 검색할 구역을 지정합니다(정보 출력 버튼 링크는 차후 메시지 박스 VBA 코드 작성 후 링크).

=AND($C3=$D$3,$D$3>0) (예) : 검색창 지정
=$D$3:$F$3,$B$5:$H$144,$Y$5:$AN$144 (예) : 검색할 영역 지정

정보 출력 버튼은 서식 -> 삽입 -> 단추 양식 -> 매크로 이름에서 미리 작성해 놓은 VBAProject 모듈에서 Public Sub 찾기()의 찾기를 링크하시면 됩니다.

즉 엑셀에서 사용되는 논리 수식으로 조건부 서식(Conditional Formatting)이나 데이터의 유효성 검사(Data Validation) 또는 IF 함수 등을 이용하여 조건을 설정할때 사용하는 것으로 AND(….) : AND 함수를 이용하여 모든 조건들이 참(True)일 때만 결과를 출력하고, 하나라도 거짓(False)이 있다면 출력하지 않는 다는 말입니다.
$C3의 열은 고정, $D$3의 열과 행은 모두 고정되어 절대 참조하라는 것으로 C3 셀값과 D3 셀값이 같고 D3 값이 0보다 커야 실행한다는 것입니다.

메시지 박스 VBA 코드 작성

엑셀 VBA를 이용한 근로자 검색 팝업 박스 출력

설명 : 메시지 박스 출력

Public Sub 찾기() : 공개 서브루틴 엑셀 파일 내의 모듈 호출
Dim i As Integer : i 이름의 변수 선언(반복문의 행 번호를 나타내는 정수 값
Dim Kabzeel_SW As Boolean : 참이나 거짓 변수 선언
If Range(“D3”) = “” Then Exit Sub : D3 셀에 값이 없으면 종료
참고 : 즉 사용자가 D3 셀에 검색할 내용을 입력하지 않고 매크로를 실행하였으며, 바로 검색하지 않고 매크로를 종료

For i = 5 To 145 : 반복문 카운트 변수의 시작과 끝
If Range(“D3”) = Cells(i, 3) Then : 검색과 셀 내용이 같으면 실행
참고 : D3에 입력한 내용과 C열의 이름 항목이 현재 행과 일차한다면 다음 코드를 실행하는데 MsgBox 함수를 사용하여 근무자의 상세 정보를 팝업 메시지 상자로 표시
vbOKOnly : 메시지 상자에 “확인” 버튼만 표시
Kabzeel_SW = True : 근무자를 찾아서 메시지 팝업 상자를 표시 했다면 Kabzeel_SW 라고 불리는 변수를 True로 설정

Cells(i, 4) ~ Cells(i, 30) : 출력할 For 문 영역
Next i : 반복문 끝
Cells(i, 3) 3번은 엑셀 시트의 행 번호입니다.
_(언더바)는 길어지는 코드를 가독성을 높이기 위해 다음 행으로 이동 작업
& vbCr & : 다음 줄 <br> 기능

즉 위의 내용은 찾기 라는 매크로를 이용하여 사용자가 D3 셀에 이름을 입력하고 검색버튼을 누리면, 엑셀 시트의 5행부터 145행까지의 C열을 검색하여 해당하는 이름을 찾습니다. 하지만 D3 셀에 아무런 내용이 없다면 매크로는 종료되지만 검색한 근무자의 이름이 있다면 메시지 박스를 열어 이름, 식별번호, 사번, 입사일, 근무지, 근무지점, 시간대별 담당 업무등의 상세한 정보를 보여주게 합니다.

나머지 부분은 복사 후 매크로를 실행하면 쉽게 이해되는 부분이며, 궁금한 코드는 검색하여 해결할 수 있습니다.

정보가 없으면 박스 출력

찾으려는 근무자 정보가 없습니다

설명 : 오류 메시지 박스 출력

If Kabzeel_SW = False Then : 변수 검색 내용이 Cells 3열 기준으로 같은 내용이 없을 경우 출력 MsgBox 내용 출력 (If Range(“D3”) = Cells(i, 3) Then)

엑셀 VBA 특정 날짜 이후 비밀번호 박스 출력 삭제
엑셀 VBA MsgBox 메시지 박스 사용 예제

목차