15. maj 2008 - 12:13
Der er
2 kommentarer og
1 løsning
Makro Opret Table Of Contest i menulinien
Idé :
I et regneark har jeg eksempelvis 10 enkeltark, som jeg gerne vil have at brugeren kan skifte imellem.
Jeg har tidligere set/benyttet løsniger hvor der oprettes en ny arkfane hvori der er en liste med hyperlink til de enkelte arkfaner, men jeg vil gerne forfine denne løsning.
Er det muligt at have et ark hvori jeg definerer arkfanenavn, eventuelt suppleret med klar tekst, og så på baggrund af denne få en makro til at oprette/vedligeholde en menufunktion ?
Eksempel :
Arknavn Tekst
Ark1 Main Report
Ark2 - Sub report 07
Ark3 - Sub report 08
Når makroen aktiveres, oprettes et nyt menupunkt/vedligeholdes eksisterende menupunkt kaldet "Table Of Contest". Indholdet i menuen skal være menupunkter der linker til de enkelte ark men benytter teksten som klar tekst i menuen
I lige måde ...
Jeg er da åben overfor alt :-) ...
Jeg har behov for en mere sigende tekst til selve linket, i min nuværende version, har jeg denne stående i celle A1 i alle de ark jeg vil medtage i "Table Of Contest", men ellers er det ok, at den genereres pr. automatik
Rem Koden kopieres & anbringes i ThisWorkbook + en enkelte sub i Module1
Rem ====================================================================
Dim MenuObject As CommandBarPopup
Dim SubMenu As CommandBarPopup
Dim MenuItem As Object
Dim SubMenuItem As CommandBarButton
Const strMenuName As String = "Table Of Contest"
Const strMenuNo As String = 11
Const intBarsNo As Integer = 1
Private Sub workbook_activate()
xlAutoOpen
End Sub
Public Sub xlAutoOpen()
Rem Sletter tidligere menu-system
DeleteMenu strMenuName, intBarsNo
Rem Hovedmenu
CreateMainMenu strMenuName, strMenuNo, intBarsNo
Rem Undersøger mapper for ark-id
traverserArk
End Sub
Public Sub xlAutoClose()
AutoOpen '-"-
End Sub
Public Sub xlAutoExec()
AutoOpen '-"-
End Sub
Public Sub xlAutoNew()
AutoOpen '-"-
End Sub
Private Sub traverserArk()
Dim ark, menuPunkt As String
For Each ark In ActiveWorkbook.Sheets
menuPunkt = ark.Cells(1, 1)
' CreateSubMenu menuPunkt, True
CreateMenuItem menuPunkt, "module1.MenuX", True, True, ark.Name
Next ark
End Sub
Sub DeleteMenu(strMenuName As String, intBarsNo As Integer)
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls(strMenuName).Delete
On Error GoTo 0
End Sub
Private Sub CreateMainMenu(strMenuName, strMenuNo As String, intBarsNo As Integer)
Set MenuObject = Application.CommandBars("WorkSheet Menu Bar").Controls.Add(Type:=msoControlPopup, _
Before:=strMenuNo, Temporary:=False)
MenuObject.Caption = strMenuName
End Sub
Private Sub CreateMenuItem(strCaption, strOnAction, strFaceId As String, bolBeginGroup As Boolean, arkNavn)
Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton)
With MenuItem
.Caption = strCaption
.OnAction = strOnAction
.BeginGroup = bolBeginGroup
.Tag = arkNavn
End With
End Sub
Rem I module1
Private Sub MenuX()
Dim valgteArk
valgteArk = CommandBars.ActionControl.Tag
ActiveWorkbook.Sheets(valgteArk).Activate
End Sub