Avatar billede jean01ad Praktikant
22. august 2007 - 08:20 Der 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?

Håber nu kan hjælpe - på forhånd tak.
Avatar billede gider_ikke_mere Nybegynder
22. august 2007 - 08:37 #1
Du kunne jo checke det aktive regnearks navn.
Avatar billede jean01ad Praktikant
22. august 2007 - 08:47 #2
Ikke forstået

Arket det skal ind i hedder Scoresheet og den xla fil menuen ligger i hedder vers. 2.0

kan du uddybe hvad du mener?
Avatar billede gider_ikke_mere Nybegynder
22. august 2007 - 08:53 #3
Du kunne nøjes med at indsætte din commandbar, hvis arket du står i hedder Scoresheet.
Avatar billede jean01ad Praktikant
22. august 2007 - 10:16 #4
Ja, det er det jeg gerne vil, men det skal gøres automatisk da der er flere brugere af arket. Det kan jeg ikke finde ud af.
Avatar billede gider_ikke_mere Nybegynder
22. august 2007 - 10:23 #5
Smid din kode.
Din commandbar skal vel ikke forsvinde, hvis der skiftes ark?
Avatar billede jean01ad Praktikant
22. august 2007 - 10:25 #6
Næææ - men jeg forstår ikke hvad du mener, jeg er ikke specielt dygtig til VBA.

Jeg har ikke som sådan lavet en ny menulinje, jeg har blot lagt en menu på microsofts eksisterende menulinje.
Avatar billede gider_ikke_mere Nybegynder
22. august 2007 - 10:42 #7
Som du vil have vist når arket Scoresheet er aktiv, skjult/slettet når andre ark er aktive eller når du lukker Excel?

Du må forklare lidt nærmere! Hvilke funktioner har du i den pågældende menu?
Avatar billede jean01ad Praktikant
22. august 2007 - 10:59 #8
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?
Avatar billede gider_ikke_mere Nybegynder
24. august 2007 - 09:09 #9
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)

End Sub

Private Sub Workbook_Deactivate()

End Sub
Avatar billede gider_ikke_mere Nybegynder
24. august 2007 - 09:15 #10
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.

SkjulMinCommandobar ved

Private Sub Workbook_Deactivate()

End Sub

og VisMinCommandobar ved

Private Sub Workbook_Activate()

End Sub

Det burde virke.
Avatar billede jean01ad Praktikant
24. august 2007 - 11:43 #11
Hej igen

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"

Set Årstal = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
Årstal.Caption = "Årstal"
Årstal.Style = msoButtonCaption
Årstal.OnAction = "visårstal"

Set Afdeling = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
Afdeling.Caption = "Vælg Afdeling"
Afdeling.Style = msoButtonCaption
Afdeling.OnAction = "visafdelingsvalg"

Set Medarbejder = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
Medarbejder.Caption = "Medarbejder Ænderinger"
Medarbejder.Style = msoButtonCaption
Medarbejder.OnAction = "vismedarbejderændringer"

Set Medarbejder = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
Medarbejder.Caption = "Medarbejder Liste"
Medarbejder.Style = msoButtonCaption
Medarbejder.OnAction = "vismedarbejderliste"

Set udskriftsvalg = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
udskriftsvalg.Caption = "Udskriftsvalg"
udskriftsvalg.Style = msoButtonCaption
udskriftsvalg.OnAction = "opdater"

Set PDF = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
PDF.Caption = "PDF Udskrift"
PDF.Style = msoButtonCaption
PDF.OnAction = "PDFudskrift"

Set DG = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
DG.Caption = "DG Liste"
DG.Style = msoButtonCaption
DG.OnAction = "DGlistevis"

Set pivot = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
pivot.Caption = "Opdater Pivot"
pivot.Style = msoButtonCaption
pivot.OnAction = "pivot"

Set statisk = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
statisk.Caption = "Statisk Kommentar"
statisk.Style = msoButtonCaption
statisk.OnAction = "statisk"

Set Hjælp = Currmenubar.Controls.Add(Type:=msoControlButton, ID:=1)
Hjælp.Caption = "Hjælp"
Hjælp.Style = msoButtonCaption
Hjælp.OnAction = "Hjælp"


End Sub
Avatar billede gider_ikke_mere Nybegynder
24. august 2007 - 15:35 #12
Avatar billede gider_ikke_mere Nybegynder
11. november 2007 - 19:54 #13
?
Avatar billede jean01ad Praktikant
12. november 2007 - 08:47 #14
Undskyld, det var ikke min mening ikke at få svaret. Jeg troede jeg havde gjort det....Nå men jeg har fået det til at virke. Tusind tak for hjælpen.
Avatar billede jean01ad Praktikant
12. november 2007 - 08:48 #15
Du må naturligvis bare sende et svar, så skal du få point
Avatar billede gider_ikke_mere Nybegynder
12. november 2007 - 18:02 #16
Ok.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester