22. august 2007 - 08:20Der er
15 kommentarer og 1 løsning
Menulinje vha xla
Hejsa
Jeg har lavet en ny menu i VBA som hedder score. Denne menu ligger i en addin fil og koden ser ud som nedenfor:
Set Currmenubar = CommandBars.ActiveMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=False) Currmenubar.Caption = "Score"
Jeg har ved at lave Temporary:=False, kunne se menulinjen når jeg har åbnet mit excelark - problemet er blot, at den jo kommer frem ligegyldig hvilket ark jeg åbner.
Jeg kunne rigtig godt tænke mig, at jeg ved hjælp af Auto_open funktionen, kunne få "Score" frem, blot i det ark, hvor den har knyttet sine funktioner. Er det muligt?
Jeg vil gerne, at menu er aktiv, når Scoresheet åbnes, og slettes igen når Scoresheet lukkes.
Der ligger 10 underpunkter i menuen. Eksempelvis et punkt, der giver mulighed for at redigere i en medarbejderdatabasen.
Helt konkret så vil jeg kun, at "Score" ligger sig på min menulinje, når arket scoresheet er åben - hvis ikke scoresheet er åbent, så skal jeg ikke kunne se menuen "Score". Er det lidt bedre formuleret?
Jeg har af en eller anden grund ikke modtaget en mail på dit sidste indlæg!
Forleden lavede jeg dette:
Public Sub OpretMinCommandobar() Set AllmyMenuBar = CommandBars.ActiveMenuBar For Each D In AllmyMenuBar.Controls If D.Caption = "Score" Then Exit Sub Next
Set myMenuBar = CommandBars.ActiveMenuBar Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=True) newMenu.Caption = "Score"
Set ctrl1 = newMenu.CommandBar.Controls _ .Add(Type:=msoControlButton, ID:=1) With ctrl1 .Caption = "Sletter noget" .TooltipText = "Slet nu" .Style = msoButtonCaption .OnAction = "Slet" 'navnet på makroen der skal afspilles
End With
Set ctrl2 = newMenu.CommandBar.Controls _ .Add(Type:=msoControlButton, ID:=1) With ctrl2 .Caption = "Import" .TooltipText = "Import" .Style = msoButtonCaption .OnAction = "Importer" 'navnet på makroen der skal afspilles
End With
End Sub
Public Sub SletMinCommandobar() Dim Y As Application Set myMenuBar = CommandBars.ActiveMenuBar For Each D In myMenuBar.Controls If D.Caption = "Score" Then D.Delete End If Next End Sub
Public Sub SkjulMinCommandobar() Set myMenuBar = CommandBars.ActiveMenuBar For Each D In myMenuBar.Controls If D.Caption = "Score" Then D.Visible = False End If Next End Sub
Public Sub VisMinCommandobar() Set myMenuBar = CommandBars.ActiveMenuBar For Each D In myMenuBar.Controls If D.Caption = "Score" Then D.Visible = True End If Next End Sub
Public Sub Slet() MsgBox "Sletter noget" End Sub
Public sub Importer() MsgBox "Importerer noget" End Sub
OpretMinCommandobar kunne du putte i en .xla fil. SkjulMinCommandobar kunne du putte i det ark der hedder scoresheet, og køre den ved følgende handlinger:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Ups, Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=True) skulle være Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=False)
Alternativt: Kør OpretMinCommandobar ved åbning af scoresheet.
Først og fremmest, så er jeg naturligvis meget glad for at du vil hjælpe. Jeg kan desværre stadig ikke få det til at virke og månok indrømme, at jeg ikke er skarp nok i VBA.
Jeg har prøvet at vedhæfte hele den sub som jeg har skrevet og lagt i XLA filen. Det er den, som jeg meget gerne vil have kørt, når arket Scoresheet åbnes, og fjernet igen når scoresheet lukkes. Håber, at du kan hjælpe yderligere
Sub Scoresheetmenu()
Dim Årstal As Object Dim Afdeling As Object Dim Medarbejder As Object Dim Hjælp As Object Dim PDF As Object Dim DG As Object Dim MU As Object Dim pivot As Object Dim statisk As Object Dim udskriftsvalg As Object
Set Currmenubar = CommandBars.ActiveMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=True) Currmenubar.Caption = "Score"
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.