- 최초 작성일: 2000-11-24
- 최종 수정일: 2026-09-30
- 조회수: 10 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 콤보박스에 하이퍼링크 연결하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
이번 시간에는 질문 하나를 살펴봅니다.
안녕하세요 엑셀러님 ^_^
항상 친절한 강좌와 답변 감사합니다.
제목 그대로 하이퍼링크 기능을 드롭다운 상자를 이용하여 할 수는 없는지요.
인터넷 서핑하다보면 그런 식으로 메뉴를 선택하는 방식이 많은데 엑셀에서도
가능할 것 같은데 아무리 해도 방법을 몰라 이렇게 글을 띄웁니다.
유효성 검사 기능을 이용하면 될 것 같기도 한데…
그럼 이만…
콤보박스에 하이퍼링크 연결하기
핵심 요약: 콤보박스 하이퍼링크
ActiveX 콤보박스의 Click 이벤트에서 선택된 항목의 ListIndex에 따라 영역으로 이동하거나 홈페이지를 엽니다.
- 1단계: 컨트롤 도구 상자에서 콤보박스를 그리고 ListFillRange로 목록을 지정합니다.
- 2단계: Click 이벤트에서 ListIndex를 확인하고 Application.Goto로 영역을 이동합니다.
- 3단계: 홈페이지 이동은 ActiveWorkbook.FollowHyperlink를 사용합니다.
Step 1: 결과 미리 보기
아주 재미있는 질문을 주셨네요. ^^ "컨트롤 도구모음"에 있는 "콤보박스"를 사용해서 한번 만들어 보았습니다. 아래의 콤보박스에서 원하는 항목을 선택해 보세요.
시트에는 "영역 이동"과 "Site 이동"이라는 이름의 콤보박스 두 개가 있으며, 첫 번째 콤보박스는 시트의 영역 1~7로, 두 번째 콤보박스는 지정한 홈페이지로 이동합니다.
바로 이렇게 되도록 해 달라는 요청이시지요?
Step 2: 콤보박스로 시트 내 영역 이동하기
1. 콤보박스에 책갈피 연결하기("영역 이동" 부분)
(1) "컨트롤 도구 상자"에서 "콤보상자" 아이콘을 클릭한 다음, 콤보박스를 워크시트 상에 하나 그려 넣습니다.(양식 도구모음의 콤보상자가 아닙니다. 주의!!!)
(2) "디자인 모드" 아이콘을 한번 클릭해 주고 콤보박스를 선택하면 (그림 1)처럼 콤보박스 컨트롤 주변에 핸들이 생깁니다. 이 상태에서 "속성" 아이콘을 클릭하면 "속성" 창이 나타납니다.
(그림 1)
(그림 2)
(3) 여기서 ListFillRange 속성 부분을 보면 H23:H29라는 값이 들어 있습니다. 이 영역에 가 보시면 영역1, 영역 2, 영역 3,… 등의 값이 들어 있습니다. 값을 입력한 다음 글자 색을 흰색으로 지정했기 때문에 눈에 보이지 않을 따름이지요. 그렇지만 콤보박스를 클릭하게 되면 그 값들이 나타나지요.
그러고 보니 ListFillRange 속성은 "양식 도구모음"의 콤보 박스 속성에서 "입력 범위"와 같은 역할을 수행하지요?
(4) "디자인 모드"가 선택되어져 있는 상태에서 콤보박스를 더블클릭하면 VB Editor의 코드입력창이 나타납니다. 만약 더블클릭을 했는데 코드창이 나타나지 않고 드롭다운 목록이 나타나면 (그림 2)의 "디자인 모드" 아이콘을 다시 한번 클릭하세요. 코드입력 창의 이벤트 선택 목록에서 Click 이벤트를 선택하고 아래와 같은 코드를 작성합니다.
Private Sub ComboBox1_Click()
Dim i As Integer
i = ComboBox1.ListIndex
'//콤보박스에서 몇 번째 항목이 선택되었는지 그 값을 변수 I에 저장합니다.
Select Case i
'//어떤 항목이 선택되었느냐에 따라 해당 위치로 이동하기 위해 분기문을 사용했습니다.
'//쓸데없이(?) 길게 코딩을 했습니다만 GoTo Method를 계속 반복해 주었을 뿐입니다.
Case 0
Application.Goto Range("Range1"), False
MsgBox "영역" & i + 1 & "(으)로 이동하였습니다", , "이동 완료//Exceller"
Case 1
Application.Goto Range("Range2"), False
MsgBox "영역" & i + 1 & "(으)로 이동하였습니다", , "이동 완료//Exceller"
Case 2
Application.Goto Range("Range3"), False
MsgBox "영역" & i + 1 & "(으)로 이동하였습니다", , "이동 완료//Exceller"
Case 3
Application.Goto Range("Range4"), False
MsgBox "영역" & i + 1 & "(으)로 이동하였습니다", , "이동 완료//Exceller"
Case 4
Application.Goto Range("Range5"), False
MsgBox "영역" & i + 1 & "(으)로 이동하였습니다", , "이동 완료//Exceller"
Case 5
Application.Goto Range("Range6"), False
MsgBox "영역" & i + 1 & "(으)로 이동하였습니다", , "이동 완료//Exceller"
Case 6
Application.Goto Range("Range7"), False
MsgBox "영역" & i + 1 & "(으)로 이동하였습니다", , "이동 완료//Exceller"
End Select
End Sub
Range1~Range7은 시트의 각 영역("여기는 [영역 n]입니다.")에 미리 정의해 둔 이름입니다.
Step 3: 콤보박스로 홈페이지 이동하기
아주 간단하지요? 이번에는 콤보박스의 특정 항목을 선택하면 해당 홈페이지로 이동하는 방법에 대해 알아봅니다.
2. 콤보박스에 책갈피 연결하기("Site 이동" 부분)
(1) ~ (3)까지의 과정은 위의 것과 같으니까 참고하시고… 코드는 조금 다릅니다.
Private Sub ComboBox2_Click()
Dim i As Integer
i = ComboBox2.ListIndex
'//마찬가지로 콤보박스에서 몇번째 항목이 선택되었는지를 변수에 담습니다.
'//특별하게 설명드릴 부분은 없는 것 같네요. ActiveWorkbook.followhyperlink …
'//이렇게 해 주면 지정한 홈페이지로 이동하게 됩니다. 그리고 NewWindow 속성은 홈페이지를
'//열 때 별도의 창을 하나 만들어서 오픈합니다.
With ActiveWorkbook
Select Case i
Case 0
.FollowHyperlink Address:="http://www.iexceller.com", NewWindow:=True
Case 1
.FollowHyperlink Address:="http://www.microsoft.com", NewWindow:=True
Case 2
.FollowHyperlink Address:="http://www.pacific.com", NewWindow:=True
Case 3
.FollowHyperlink Address:="http://www.officetutor.com", NewWindow:=True
Case 4
.FollowHyperlink Address:="http://www.laneige.co.kr", NewWindow:=True
End Select
End With
End Sub
코드에 사용된 웹사이트 주소는 강좌를 만들 당시의 것이어서 현재는 바뀌었거나 사라졌을 수 있으며, 요즘은 https:// 주소를 사용하는 것이 일반적입니다. 또한 FollowHyperlink는 보안 설정에 따라 확인 창이 나타날 수 있습니다. 워크시트 안의 이동만 필요하다면 콤보박스 없이 HYPERLINK 함수나 하이퍼링크 삽입 기능으로도 구현할 수 있습니다.
마무리
많이 응용하셔서 더 재미있는 것들을 만들어 보시기 바랍니다.
다음 시간에…
정리 — 콤보박스 하이퍼링크 핵심
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 목록 채우기 | ListFillRange = H23:H29 | 콤보박스 목록 범위 |
| 선택 확인 | ComboBox1.ListIndex | 선택된 항목 번호 |
| 영역 이동 | Application.Goto Range("Range1"), False | 이름 정의 영역으로 이동 |
| 홈페이지 이동 | FollowHyperlink Address:=... | 웹사이트 열기 |
| 새 창 | NewWindow:=True | 별도 창으로 열기 |
자주 묻는 질문 (FAQ)
Q1. 콤보박스로 하이퍼링크를 실행할 수 있나요?
가능합니다. 콤보박스의 Click 이벤트에서 선택 항목에 따라 Goto나 FollowHyperlink를 실행하면 됩니다.
Q2. ListFillRange 속성은 무엇인가요?
ActiveX 콤보박스의 목록으로 사용할 셀 범위를 지정하는 속성으로, 양식 콤보상자의 입력 범위에 해당합니다.
Q3. 디자인 모드는 왜 필요한가요?
컨트롤을 편집하거나 더블클릭해 코드 창을 열려면 디자인 모드가 켜져 있어야 합니다.
마치며
콤보박스와 이벤트 프로시저를 활용하면 메뉴처럼 동작하는 하이퍼링크를 만들 수 있습니다.