macro die macro's koppelt aan knoppen werkbalk?

Status
Niet open voor verdere reacties.

PeterBulthuis

Nieuwe gebruiker
Lid geworden
13 mei 2010
Berichten
1
Ik heb enkele macro's in Excel gemaakt en gekoppeld aan knoppen in een werkbalk. Dit werkt prima, maar soms na het opstarten van Excel gebeurt het dat Excel de macro's niet kan vinden na het op de knoppen drukken. Terwijl deze toch niet zijn verschoven en wel aanwezig zijn. Ik moet dus dan weer handmatig alle macro's opnieuw koppelen aan de knoppen.
Dit zou toch automatisch moeten kunnen via een macro. Dit heb ik geprobeerd door de handelingen op te nemen in een macro, maar blijkbaar wordt dit niet geregistreerd, want de macro blijft leeg...

Weet iemand hoe ik dit probleem op kan lossen? Zodat ik via een macro toch alle knoppen in een handeling weer kan koppelen aan de desbetreffende macro's of is er een andere manier om dit snel te doen?
 
Beste PeterBulthuis,

Aangezien je dit op het VBA forum post neem ik aan dat je het met een macro denkt te kunnen oplossen.
Dat is inderdaad mogelijk, je kunt dergelijke macros niet opnemen, dus zul je het met je vba kennis moeten proberen.

Kijk eens naar onderstaande code
Maak een nieuw excel bestand, ga naar de VBA editor en...

..plaats dit in het object "ThisWorkBook"
Code:
Option Explicit
Private Sub Workbook_Open()
'maak menu aan bij openen van het bestand
Run "AddCustomMenu"
End Sub
Private Sub Workbook_BeforeClose(cancel As Boolean)
'verwijder menu bij sluiten van bestand
Run "RemoveCustomMenu"
End Sub

Maak twee modules aan en ..
..plaats deze code in module 1
Code:
Option Explicit
Private Const MyMenuName As String = "Testmenu"                             'de naam van het menu
Sub AddCustomMenu()
Dim cb As CommandBar
Dim Mycbc As CommandBarControl

Call RemoveCustomMenu

Set cb = Application.Commandbars("Worksheet Menu Bar")  'de werkbalk
Set Mycbc = cb.Controls.Add(Type:=msoControlPopup)      'het dropdown menu

Mycbc.Caption = MyMenuName

With Mycbc.Controls.Add(Type:=msoControlButton)         'de knop met macro
    .Caption = "Maak &rood"         'de tekst van de knop. de Ampersand is de sneltoets letter
    .OnAction = "MakeRed"           'de macro die je wilt uitvoeren (tussen haakjes)
End With
With Mycbc.Controls.Add(Type:=msoControlButton)
    .Caption = "Maak &groen"
    .OnAction = "MakeGreen"
End With
With Mycbc.Controls.Add(Type:=msoControlButton)
    .Caption = "Maak &blauw"
    .OnAction = "MakeBlue"
End With

Set cb = Nothing
Set Mycbc = Nothing

End Sub
Sub RemoveCustomMenu()
'als het menu bestaat, verwijder deze
If CheckOfMenuBestaat(MyMenuName) Then Application.Commandbars("Worksheet Menu Bar").Controls(MyMenuName).Delete
End Sub
Function CheckOfMenuBestaat(MyMenuName As String) As Boolean
' een custom functie die kijkt of je menu al bestaat, zo ja, verwijder deze.
Dim bar As CommandBarControl
For Each bar In Application.Commandbars("worksheet Menu BAr").Controls
    If bar.Caption = MyMenuName Then CheckOfMenuBestaat = True
Next
End Function

..plaats deze code in module 2
Code:
Option Explicit
Sub MakeRed()
Cells.Interior.ColorIndex = 3
End Sub
Sub MakeGreen()
Cells.Interior.ColorIndex = 4
End Sub
Sub MakeBlue()
Cells.Interior.ColorIndex = 5
End Sub

Probeer het te begrijpen en kijk eens hoever je komt.
Als je vragen hebt hoor ik het graag..!

Mark.
 
Laatst bewerkt:
Bedankt voor je antwoord!

Maar ik ben er inmiddels achter waar het probleem echt ligt. Ik heb in een spreadsheet enkele macro's gemaakt en deze macro's toegewezen aan enkele knoppen op een werkbalk in Excel.
Dit werkt prima als ik Excel open door te dubbelklikken op het Excel-document. Maar open ik eerst Excel en dan via Openen het document, dan willen de macroknoppen de macro's niet herkennen.
De macroknoppen blijven dus staan. Ook als het document is gesloten. Eigenlijk is dat niet nodig en zouden die knoppen alleen zichtbaar hoeven zijn wanner ik het document met de macro's open.

Groet,

Peter
 
Bedankt voor je antwoord!
De macroknoppen blijven dus staan. Ook als het document is gesloten. Eigenlijk is dat niet nodig en zouden die knoppen alleen zichtbaar hoeven zijn wanner ik het document met de macro's open.

Beste Peter,

Als je het probleem zo kunt omzeilen, en het werkt voo jou is dat natuurlijk prima,
Dat zou ik ook kunnen doen met minder belangrijke taken.

Het mooiste is natuurlijk wel als je menu wordt verwijderd wanneer je het Excel-bestand met macro's afsluit.
(Een voorbeeld daarvan staat ook in de code die ik hierboven gepost heb).

Mooi dat je eruit bent in ieder geval.

Mark.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan