배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
엑셀 2000, 황기성님의 엑셀VBA 2일, Excel 2000
excelvbalogo.gif (3602 bytes)
고급필터를 이용한 데이터 검색기능을 VBA로 자동화 하기 (3)

 


(16) 매크로로 기록할 내용이 끝났으므로, [기록중지] 도구 모음에서 [기록중지] 단축 아이콘을 누르거나, [도구] 모음에서 [매크로] [기록중지]를 차례로 선택합니다.

d_18.gif(20757바이트)

강좌에 포함된 축소된 그림은 클릭하시면 확대해서 보실 수 있습니다.

(17)기록한 매크로의 내용을 살펴보기 위해 [도구]메뉴에서 [매크로]☞[Visual Basic Editor(V)]를 차례로 선택하거나, Alt + F11키를 눌러 VB 편집기 창을 엽니다.

d_19.gif(17906바이트)

(18) 아마도 독자들은 아래와 비슷한 VBA 코드가 기록되어 있는 것을 확인할 수 있을 것입니다. 이 코드를 확인하고 다시, 엑셀로 돌아가기 위해 Alt + Q를 누르거나, Alt + F11키를 누릅니다.

Sub Macro1()
' Macro1 Macro' 황기성이(가) 2000-05-11에 기록한 매크로

 Sheets("데이터").Range("A1:U69").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("조건").Range("D1:D2"), CopyToRange:=Range("A7"), _ Unique:=False
End Sub

만약 이러한 내용 이외에 다른 것이 기록되어 있다면, 혹 불필요하게 기록한 내용은 없는지 살펴보세요.

(19) '검색'시트에서, 다시 [양식 도구]에서 [단추]를 선택하고, 삽입하려는 워크시트의 위치를 결정한 뒤, 마우스 왼쪽 단추를 누른 채 원하는 크기 만큼 드래그 한 다음, 마우스 버튼을 떼면 단추가 워크 시트에 삽입되면서, [매크로 지정] 대화 상자가 나타납니다. 이 때, 우리가 앞서 기록한 Macro1이라는 매크로를 선택해, 이 단추와 Macro1을 연결합니다.

d_20.gif(20351바이트)

(20) 이제 워크시트에 삽입한 단추에 매크로 연결되었으므로, 단추를 누르면 매크로가 실행되게 됩니다. 그 전에, 단추의 캡션을 변경해 보기 좋게 만들어 보자. 요령은 앞서 옵션 버튼의 캡션을 변경한 것과 동일합니다. 마우스 오른쪽 버튼을 눌러 개체를 선택하고, 다시 오른쪽 마우스 버튼을 눌러 빠른 메뉴에서 [텍스트 편집(X)]을 선택한다. 단추의 캡션을 '검색합니다'로 변경합니다.

d_21.gif(21561바이트)

(21) 매크로가 제대로 동작하는가를 확인하기 위해 '계약자로 검색'이라는 옵션 버튼을 선택하고, D2셀에는 '일'을 입력하고 검색합니다 단추를 눌러보자. 아마도, 원하는 결과가 만족스럽게 나타나지 못했을 것입니다.

d_22.gif(21681바이트)

(22) 이 매크로를 유연하게 사용하기 위해서, 다시 Alt + F11키를 눌러 VB편집기를 연 다음, Macro1을 아래와 같이 수정해 봅니다.

Sub Macro1()
' Macro1 Macro' 황기성이(가) 2000-05-11에 기록한 매크로

Application.DisplayAlerts = False Sheets("데이터").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
 CriteriaRange:=Sheets("조건").Range("D1:D2"), CopyToRange:=Range("A7").CurrentRegion, _
 Unique:=False
Application.DisplayAlerts = True
End Sub

Application.DisplayAlerts = False란, 엑셀의 경고 메시지를 나타나지 않도록 하기 위한 것이다. 만약 이 구문을 넣지 않으면, 가끔씩 아래와 같은 경고 메시지가 나타날 수 있으므로 이를 막도록 한 것입니다.

d_23.gif(2829바이트)

주의! Application.DisplayAlerts = False으로 경고 메시지 속성을 변경한 경우Application.DisplayAlerts = True다시 True로 설정해 주어야 합니다. 그렇지 않은 경우, 엑셀이 여러분이 중요한 오류를 초래할 수 있는 작업을 하려고 할 때 경고 메시지를 나타내지 않게 됩니다. 

위의 구문은, 매크로 기록기로 기록한 내용 가운데, 단지 두 세 곳 정도를 수정한 것입니다.(일반적으로는 고급 필터와 같은 매크로를 VBA로 코딩할 경우, 개체 변수라는 것을 선언하고, 이 변수를 이용해 작업합니다. 단지 예를 들기 위한 것이므로 여기서는 이렇게 코딩한 것입니다.)

매크로 기록기가 기록한 내용을 수정하기 위해 사용한 속성 가운데, 하나가 CurrentRegion이입니다. 이것은 여러분이 현재 셀이 위치한 데이터와 연속해 있는 모든 데이터를 선택하기 위해, Ctrl + Shift + 8(*)을 누르는 것과 같은 것이다. 데이터베이스의 목록이 계속 확장될 수 있으므로 이렇게 데이터가 속해 있는 연속된 데이터 범위를 지정하여 코딩하는 것이 능률적임을 알 수 있을 것입니다.

(23) 자 이제 모든 작업은 일단락 되었습니다, 검색시트에서 옵션 버튼을 이용해 검색하려는 필드를 먼저 선택하고, D2셀에 조건을 입력하면, 조건을 만족하는 데이터만을 추출해 보여줄 것입니다.

d_24.gif(28436바이트)


목차
| 이전 | 다음