Excel 리본은 특정 작업에 맞게 수정할 수 있습니다. 이 연습에서는 사용자에게 작업과 관련된 특정 시트를 가리키는 새 메뉴를 만듭니다.
이 기사에서는 다음과 같이 Excel 워크 시트에서 사용자 지정 메뉴를 만드는 방법을 소개합니다.
이 문서에서는 독자에게 개발자 리본이 표시되고 VBA 편집기에 익숙하다고 가정합니다. 그렇지 않은 경우 Google "Excel 개발자 탭"또는 "Excel 코드 창"을 사용하십시오.
통합 문서
사용할 통합 문서에는 여러 시트가 있습니다. 여기에있는 샘플을 사용하는 것이 좋습니다. 이렇게 생겼어요.
처음 XNUMX 개의 시트는 제대로 작동하지 않으며이 연습에서는 탐색 목적으로 만 사용됩니다.
다섯 번째 시트에는이 통합 문서에 특정한 사용자 지정 메뉴 구조가 들어 있습니다. 현재 테스트 버튼을 제외하고는 비어 있어야합니다.
메뉴 구조 추가
다음 텍스트 블록을 "MenuSheet"시트의 A1 셀에 복사합니다.
레벨, 캡션, 위치 / 매크로, 디바이더
1, 사용자 도구, 10
2, 대시 보드 표시, 대시 보드 선택
2, 새로 추가,, TRUE
3, 클라이언트, SelectClient
3, 위치, 위치 선택
3, 관리자, SelectManager
2, 닫기, 닫기 파일
메뉴 구조 서식 지정
이 CSV 데이터는 A 열에 있습니다. 개별 Excel 셀로 형식을 지정하려면 A 열을 선택하고 '텍스트를 열로' 인간을 데이터 탭. 구분 기호는 "쉼표"입니다.
위는 적절한 코드를 추가하면 왼쪽에 레벨 기반 메뉴 구조를 제공합니다.
이 연습에서 첫 번째 수준은 워크북 전체 너비가 표시될 때 볼 수 있듯이 메뉴 모음의 열 번째 항목으로 임의로 배치되었습니다.
메뉴 생성 및 삭제
이 특정 통합 문서에 대한 새 메뉴 만 필요하므로 통합 문서를 열고 닫을 때 메뉴를 만들고 제거합니다.
아래 코드는 시작용 코드입니다. 이 코드는 통합 문서가 열리거나 닫힐 때 실행됩니다. 이 코드를 복사하여 통합 문서의 모듈에 붙여넣으세요.
MenuSheet의 테스트 단추를 Auto_Open에 지정하십시오.
Option Explicit Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub
아래에서 메뉴 구조를 더 자세히 살펴 보겠습니다.
매크로가 트리거되지 않음 새로운 추가 하위 메뉴의 상위 기능 외에 다른 기능이 없기 때문입니다.
이러한 종류의 메뉴 구조는 유지 관리가 쉽습니다. 메뉴 레벨을 인식하고 매크로로 새 항목을 추가하기 만하면됩니다.
코드
다음 VBA 코드를 모듈에 추가하십시오. 이것은“MenuSheet”를 검사하고 사용자 정의 된 메뉴를 만듭니다.
Sub CreateMenu()
' Called from Auto_Open. 'NOTE: There is no error handling in this subroutine
Dim MenuSheet As Worksheet
Dim MenuObject As CommandBarPopup
Dim MenuItem As Object
Dim SubMenuItem As CommandBarButton
Dim sRow As Integer
Dim MenuLevel, NextLevel, PositionOrMacro, Caption, Divider
Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
Call DeleteMenu
sRow = 2 ' start row
' Add menus using the structure as per the MenuSheet
Range("A" & sRow).Select
Do While ActiveCell > "" '****************
With MenuSheet
MenuLevel = .Cells(sRow, 1)
Caption = .Cells(sRow, 2)
PositionOrMacro = .Cells(sRow, 3)
Divider = .Cells(sRow, 4)
NextLevel = .Cells(sRow + 1, 1)
End With
Select Case MenuLevel
Case 1 ' Add the top-level menu to the Worksheet CommandBar
Set MenuObject = Application.CommandBars(1). _
Controls.Add(Type:=msoControlPopup, _
Before:=PositionOrMacro, _
Temporary:=True)
MenuObject.Caption = Caption
Case 2 ' A Menu Item
If NextLevel = 3 Then
Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup)
Else
Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton)
MenuItem.OnAction = PositionOrMacro
End If
MenuItem.Caption = Caption
If Divider Then MenuItem.BeginGroup = True
Case 3 ' A SubMenu Item
Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton)
SubMenuItem.Caption = Caption
SubMenuItem.OnAction = PositionOrMacro
If Divider Then SubMenuItem.BeginGroup = True
End Select
sRow = sRow + 1
Range("A" & sRow).Select '***************************************
Loop
Sheets("Dashboard").Activate
End Sub
Sub DeleteMenu()
' This sub will be executed when the workbook is closing
Dim MenuSheet As Worksheet
Dim sRow As Integer
Dim Caption As String
On Error Resume Next
Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
sRow = 2
Range("A" & sRow).Select
Do While ActiveCell > ""
If MenuSheet.Cells(sRow, 1) = 1 Then
Caption = MenuSheet.Cells(sRow, 2)
Application.CommandBars(1).Controls(Caption).Delete
End If
sRow = sRow + 1
Range("A" & sRow).Select
Loop
On Error GoTo 0
End Sub
Sub SelectDashboard()
Sheets("Dashboard").Activate
End Sub
Sub SelectClient()
Sheets("Client").Activate
End Sub
Sub SelectLocation()
Sheets("Location").Activate
End Sub
Sub SelectManager()
Sheets("Manager").Activate
End Sub
Sub CloseFile()
MsgBox "Close! (write your own code in the module)"
End Sub
테스트 버튼으로 코드를 테스트합니다. 새로 생성 된 사용자 메뉴는 추가 기능 아래의 메뉴 위치 10에 있습니다.
엑셀 복구
Excel은 때때로 불안정하며 열 때 충돌이 발생하여 소스 파일이 손상됩니다. 파일 복구에 실패한 경우 복구 도구가 있으면 유용합니다. Excel 손상 그렇지 않으면 백업되지 않은 모든 작업 내용이 손실됩니다.
저자 소개 :
Felix Hooker는 데이터 복구 전문가입니다. DataNumen, Inc.는 다음과 같은 데이터 복구 기술 분야의 세계적 리더입니다. 수리 rar 및 SQL 복구 소프트웨어 제품. 자세한 내용은 WWW.datanumen.COM



