• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

commandbarpopup compileerfout

Status
Niet open voor verdere reacties.

splenter

Nieuwe gebruiker
Lid geworden
24 apr 2008
Berichten
4
Ik heb een macro geschreven waarbij ik een extra menu wil toevoegen aan de menu-bar, met de waarden die in het werkblad "MenuSheet" zijn ingevuld.
Eerst heb ik de macro geschreven in een nieuw werkblad waar ik geen probleem ondervind. Wanneer ik de macro echter naar mijn document waar ik het nodig heb wil kopieren krijg ik een compileerfout, en wordt de lijn met de macrotekst "Dim MenuObject As CommandBarPopup" opgekleurd.
Dezelfde macro naar een nieuw document schrijven geeft geen problemen...

Volledige macro:
Sub CreateMenu()

Dim MenuSheet As Worksheet
Dim MenuObject As CommandBarPopup

Dim MenuItem As Object
Dim SubMenuItem As CommandBarButton
Dim Row As Integer
Dim MenuLevel, NextLevel, PositionOrMacro, Caption, Divider, FaceId

Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")

Call DeleteMenu

Row = 2

Do Until IsEmpty(MenuSheet.Cells(Row, 1))
With MenuSheet
MenuLevel = .Cells(Row, 1)
Caption = .Cells(Row, 2)
PositionOrMacro = .Cells(Row, 3)
Divider = .Cells(Row, 4)
FaceId = .Cells(Row, 5)
NextLevel = .Cells(Row + 1, 1)
End With

Select Case MenuLevel
Case 1
Set MenuObject = Application.CommandBars(1). _
Controls.Add(Type:=msoControlPopup, _
Before:=PositionOrMacro, _
Temporary:=True)
MenuObject.Caption = Caption

Case 2
If NextLevel = 3 Then
Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup)
Else
Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton)
MenuItem.OnAction = PositionOrMacro
End If
MenuItem.Caption = Caption
If FaceId <> "" Then MenuItem.FaceId = FaceId
If Divider Then MenuItem.BeginGroup = True

Case 3
Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton)
SubMenuItem.Caption = Caption
SubMenuItem.OnAction = PositionOrMacro
If FaceId <> "" Then SubMenuItem.FaceId = FaceId
If Divider Then SubMenuItem.BeginGroup = True
End Select
Row = Row + 1
Loop
End Sub


Hoe krijg ik dit weg, kan iemand me helpen?
 
Dat is gewoon de (letterlijke?) code van de menumaker van J-Walk maw ik denk dat jij die code niet "geschreven" hebt :).
Dat gezegd zijnde: Ik heb ook niet dadelijk een idee wat er aan scheelt, misschien een "conflict" met andere code in het bestand? Post anders het bestand eens waar het mis in gaat?
 
Staat er in het boek van John Walkenbach waarin hij deze macro bespreekt misschien geen verwijzing naar wat deze fout zou kunnen genereren ?

Edit @Finch Ook het boek gelezen ?

Mvg

Rudi
 
Hij werkt van Excel 97 tot Excel 2003, dus zou hij het moeten doen.
Als je de file download werk die dan ook niet?
Is dit de macro van die file?
 
Waarschijnlijk is een noodzakelijke verwijzing verbroken. Check even dat in je VBE Extra > Verwijzingen de Microsoft Office xx.0 Object Library staat aangevinkt (met xx het hoogste nummer dat je kan vinden in de lijst). Normaal moet hij dan wel een CommandBarPopup herkennen.
 
splenter,

Ik zelf gebruik Excel 2007 en daar werkt hij ook.
Alleen als je iets in het menu aan klikt zegt hij dat er geen code is, die moet je dus zelf maken.
Je kan de menu items text veranderen en zal je zelf de macro moeten schrijven.
 
Waarschijnlijk is een noodzakelijke verwijzing verbroken. Check even dat in je VBE Extra > Verwijzingen de Microsoft Office xx.0 Object Library staat aangevinkt (met xx het hoogste nummer dat je kan vinden in de lijst). Normaal moet hij dan wel een CommandBarPopup herkennen.


Dank u wel, bij deze is het probleem opgelost
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan