[ 기초 강좌 ]
제 36 강
DropDownBox(TightlyItem)
DropDownBox(TightlyItem)
그 사용법을 알아봅니다.
이럴 때 필요해요
DropDownBox(TightlyItem)는 매우 유용한 기능입니다.
이렇게 사용해요
먼저, 아래 드롭다운박스의 버튼을 눌러 나타 나는 목록들을 살펴 보시기 바랍니다.
[프로젝트 탐색기] 창에서 Sheet1(Sheet1)오브젝트를 더블클릭하여 오른쪽의 [코드창]에 기록되어 있는
Worksheet_Change 이벤트 프로시저의 내용을 살펴 보시기 바랍니다.
Private Sub Worksheet_Change(ByVal Target As Range) |
Worksheet_Change이벤트 프로시저에 대해서는 앞서 수 차례 설명드렸으므로 생략합니다.
Dim rngSelect As Range, rngCell As Range Dim rngList As Range Dim cmbCombo As DropDown |
늘 그랬듯이 먼저, 배역인물(변수)들을 각각 지정(선언)해 줍니다.
Set cmbCombo = Sheets("Sheet1").DropDowns("MyCombo") Set rngList = Range(Cells(6, 3), Cells(65536, 3).End(xlUp)) Set rngSelect = Intersect(Target, rngList) |
각 변수들의 정의부분에 대해서는 별도의 설명이 필요없을 듯 해서 생략하겠습니다.
On Error Resume Next If Not rngSelect Is Nothing Then |
If 조건문으로 변수 rngSelect의 값에 변경(수정, 입력, 삭제 등)이 발생할 경우, 아래의 코드를 실행하도록 조치해 둡니다.
With cmbCombo .RemoveAllItems For Each rngCell In rngList If IsEmpty(rngCell) Then GoTo ScanNext |
바로 이부분이 오늘의 핵심부분입니다. For Each~Next 문으로 변수 rngList의 영역을 순환하되, 만약에 빈 셀(IsEmpty(rngCell))을 만나면,아래의 ScanNext 부분의 코드를 실행(Go To ScanNext)하게 됩니다.
(위에서 사용된 GoTo문에 대해서는 언젠가 설명드린 기억이 있으므로, 역시 생략합니다.)
.AddItem rngCell .ListIndex = 1 |
그렇지 않은 경우, 즉 빈 셀이 아닌 경우에는 rngCell의 값을 변수 cmbCombo로 정의된 드롭다운박스의목록으로 채워 넣고(AddItem), 채워 넣은 첫번째의 목록값(ListIndex = 1)이 나타 나게 합니다.
ScanNext: Next rngCell |
위에서 GoTo 문을 사용하여, 만약에 rngCell의 값이 비어 있을 경우, 실행하도록 조치해 두었던 코드의 내용은 Next rngCell, 즉 다음 셀로 넘어 가라는 것입니다.
rngCell이 빈 셀이면 다음 셀로 넘어가고, 빈 셀이 아니면 드롭다운박스의 목록에 채워 넣고, 또 빈 셀이면 다시 다음 셀로 넘어가고 … 를 반복하게 되면 결국, 드롭다운박스의 목록에는 변수 rngList의 영역 내에서 비어 있지 않은 셀의 데이터들로만 채워 지겠죠.
End With End If |
With 문과 If 문을 모두 종료하고, 프로시저 역시 종료합니다.
End Sub |
2. 다운로드 받은 콘텐츠는 본인(본인회사)만 사용할 수 있습니다.
3. 다른 사람과 공유하거나 원본 또는 수정 후 무단전제,무단배포,무단판매,무단 공유할 수 없습니다.
4. 웹상에서 배포는 상업,비상업적 목적을 불문하고, 손해배상등 가중처벌됩니다.