13. august 2009 - 12:13Der er
5 kommentarer og 1 løsning
VBA Excel Addin: Placering af menupunkt lige før "Help"
Laver et Add-in til Excel, der lægger et ekstra menupunkt op i Excels menubar, som det næstsidste menupunkt, lige før Help
Dim cbcSubMenu As CommandBarControl
Set cbMainMenuBar = Application.CommandBars("Worksheet Menu Bar") iHelpMenu = cbMainMenuBar.Controls("Help").Index '<---PROBLEM Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlPopup, Before:=iHelpMenu) cbcCutomMenu.Caption = "MitMenupunkt" With cbcCutomMenu.Controls.Add(Type:=msoControlButton) .Caption = "Menu 1" .OnAction = "MyMacro1" End With
Men da jeg søger på strengen "Help", vil det jo ikke virke ved en dansk, spansk osv. version af Excel. Kan man ikke tælle menupunkter i Excel (det kan vel variere fra version til version), og så indsætte min menu som det næstsidste punkt?
Men du kan ikke være sikker på, at Help er den sidste menu. Hvis brugeren f.eks. har installeret Adobe Acrobat, vil der være tilføjet en ekstra menu efter Help. Hvis der er andre add-ins, kan der være tilføjet andre menuer.
Du burde kunne udnytte, at de indbyggede controls har et ID, som du kan finde på følgende måde:
CommandBars("Worksheet Menu Bar").Controls("Help").Id
Den viser, at ID på Help-menuen er 30010
Du kan så udnytte ID i stedet for navnet:
Dim iHelpMenu As Long iHelpMenu = CommandBars.FindControl(ID:=30010).Index
Set cbcSubMenu = cbMainMenuBar.Controls.Add(Type:=msoControlPopup, Before:=2)
Så vil menuen komme ind som en ny nr. 2. I dette tilfælde kan du jo nok være sikker på, at der findes mindst 2 menuer i forvejen. Hvis du ikke kunne det, kunne der komme en fejl. Der kunne testes for antal controls først, hvis det var nødvendigt:
If cbMainMenuBar.Controls.count >= 2 then 'Lav din menu Else 'Besked til brugeren om, at det ikke kan lade sig gøre eller andet - f.eks. en anden placering End if
Kommer her. Går ud fra, at det betyder, at du kan få det til at virke...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.