Excel & VBA---Brain Training
몇장의 시트(몇장이라도 상관없다)에
노트에 큰제목,작은 제목을 쓰고 내용을 정리하듯이
만들어 놓은후 아래구문을 실행하면
Main이라는 시트가 만들어지고 시트에 각시트의 큰제목들
이 주욱 메뉴같이 만들어 질것이다
Sub RefreshNavigation()
Dim shtX As Worksheet, iX As Integer
Dim rStart As Range
Dim rFirstCol As Range
Dim rEach As Range
Dim shtMain As Worksheet
Set shtMain = GetMainSheet("Main")
Set rStart = shtMain.Range("B3")
For Each shtX In Worksheets
If shtX.Name <> "Main" Then
rStart.Offset(iX) = shtX.Name
iX = iX + 1
Set rFirstCol = _
shtX.Columns(1).SpecialCells(xlCellTypeConstants)
For Each rEach In rFirstCol.Cells
rStart.Offset(iX, 1) = rEach
iX = iX + 1
Next
End If
Next
rStart.CurrentRegion.Columns.AutoFit
MsgBox "Main시트에 메뉴가 만들어졌고.." & _
"메뉴를 크릭하면 해당시트로 이동하는것이 문제다!!.." & _
"또한 각시트의 첫째열을 크릭하면 Main시트로 " & _
"이동하게 프로그래밍한다!!"
End Sub
Function GetMainSheet(shtName As String)
Dim shtX As Worksheet
On Error Resume Next
Application.DisplayAlerts = False
Worksheets(shtName).Delete
Application.DisplayAlerts = True
Set shtX = Worksheets.Add
shtX.Name = shtName
ActiveWindow.DisplayGridlines = False
shtX.Cells.Font.Name = "Tekton Pro"
shtX.Cells.Font.Size = 14
Set GetMainSheet = shtX
End Function
아래의 그림과 같이 Main시트에 각시트의 이름과
각시트의 A열에 있는 내용으로 이동할수 있는 메뉴가
만들어 진다
문제는 Main시트의 각시트명이나 각시트의 첫째열의
정보를 크릭하면 해당시트의 해당정보행으로 이동하도록
하는 문제다
문제는 Main시트가 그냥 있다면 Main시트의 이벤트를 활용하면
될텐데..일부러 매번 삭제하게 만들었다
시트가 계속생성이 되도 이벤트를 콘트롤할수 있는 오브젝트가
무엇일까..
그리고 각각의 시트의 첫째열을 크릭하면 Main시트로 이동하게
프로그래밍하기 바란다
직접 해보아야 ..실무에 활용할수 있다
아래의 해설화일에서는 좀더 다양한 작업을 하도록 하였다
서식을 그림과 같이 좀 더 하고
Hyperlink오브젝트를 다루고
2단계까지 하지 않고 3단계까지 더 깊이 들어가도록 하였다
각 단계별로 Hyperlink를 설정하는것은 같은 작업을 반복하여
하는 경우가 될것이고 이것을 별도로 분리한 프로시져에서
처리하면 간략하게 할수 있는 것등을 숙달하도록 한다
크릭하면 각시트의 해당 장소로 이동한다
Braintraining_27.