29. januar 2003 - 09:59Der er
23 kommentarer og 2 løsninger
Knap til en macro på værkstøjslinjen
Hvordan laver jeg en knap på værktøjslinjen, der starter en macro i et Excel-dokument? Det skal være sådan, at knappen kun er aktiv sålænge det dokument, som har fået tildelt knappen, er åben! Det skulle være ligetil, men jeg kan ikke finde ud af det.
Jeg har allerede lavet en knap på værktøjslinjen som aktiverer macroen, men problemet er, at knappen ikke forsvinder når Excel-dokumentet er lukket.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Løsningen på dit problem er at lave en tilføjelse i Before close (eller noget i den stil). Her laver du en programstump, der sletter den relevante knap/værktøjslinie.
Du skal oprette en "arkskabelon" dette gør du ved at oprette en projektmappe og derefter gemme den som skabelon (gem som - ind i filtype og vælg *.xlt) derefter kan du oprette din "macroknap" i denne skabelon og den vil så kun være tilgængelig i de regnearker der er oprettet ud fra denne skabelon. Se forøvrigt HJÆLP under "oprette en arkskabelon til nye projektmapper".
b_hansen >> Jeg tror, at jeg benytter mig af din forslag om at lave noget kode der tilføjer og fjerner knappen. Men hvordan gør jeg det? Har du allerede en kode der tilføjer en knap og derefter assigner en macro til knappen? Og bagefter sletter den?
Næsten somaliomar. Jeg har lavet noget kode, der tilføjer og sletter en menubjælke. Måske det kan hjælpe? Det forudsætter dog, at du har tilføjet menulinien til det aktuelle ark. I this workbook tilføjer du følgende kode:
Private Sub Workbook_Open() Application.CommandBars("Menu til informationsystem").Visible = True End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.CommandBars("Menu til informationsystem").Visible = False Application.CommandBars("Menu til informationsystem").Delete End Sub
Det vil jeg da tro, men jeg har ikke selv testet det. Men du kan jo eventuelt prøve at optage en makro, hvor du tilføjer en knap og tilhørende makro til en eksisterende menu, og bagefter sletter den igen. Så deler du kodestumpen op i den del, der opretter menupunktet, som placeres i Private Sub Workbook_Open() Den del, der sletter igen, placerer du herefter under Private Sub Workbook_BeforeClose(Cancel As Boolean)
Det burde virke. Men ellers burde det nu ikke være noget problem med en selvstændig menubjælke. Den kan jo placeres ved siden af en eksisterende, så det ser ud som om, der er tale om én.
Jeg har fundet to muligheder for at tilføje menupunkter ved at optage en makro: Application.CommandBars("Menuens navn").Controls.Add Type:= _ msoControlButton, ID:=2949, Before:=6 Application.CommandBars("Menuens navn").Controls.Add Type:= _ msoControlButton, ID:=2950, Before:=6 Den første tilføjer et "brugerdefineret menupunkt" og den anden tilføjer en "brugerdefineret knap"
Jeg har fået fremtryllet følgende slettemulighed: Application.CommandBars("Brugerdefineret genvejsmenu5").Controls(1).Delete
Det skal bemærkes, at jeg testede på en brugerdefineret menu, jeg havde lavet i forvejen. Hvorvidt det virker på standardmenuerne, ved jeg ikke. Umiddelbart kan jeg finde ud af at tildele en makro.
Indsæt disse to makroer i ThisWorkBook. Den første indsætter knap når regnearket åbnes og den næste fjerner den igen når det lukkes. I punktet .OnAction= skriver du navnet på den makro du ønsker at knappen skal køre. Vær opmærksom på at Before 25 vil få knappen til at være nummer 25. Dette nummer skal bruges når den slettes igen. Knappen lægges i Standard-menubjælken. Denne hedder ikke nødvendigvis standard på dansk.
Private Sub Workbook_Open() Dim test As Object Set test = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, ID _ :=266, Before:=25, temporary:=True) With test .Caption = "Hent regneark" .OnAction = "Hent_Ark" End With End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.CommandBars("Standard").Controls(25).Delete End Sub
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.