folgendes Problem : Ich habe für den rechtsklick in einem bestimmten Zellbereich die bestehenden Einträge der CommandBars("Cell") gelöscht und eigene Erstellt.
Die Einträge haben 2 Ebenen. Ebene 1 sind CommandBarPopup's die jeder wiederum eine 2. Ebene mit CommandBarButton's hat.
Die Einträge werden in VBA über Schleifen erstellt und bekommen den Namen von Zelleinträgen in der Excelmappe. So weit so gut.
Mein Ziel ist es, dass in der ausgewählten Zelle dann der Name des gewählten CommandBarButton's erscheint. Mein Versuch über :
ActiveCell.Value = Application.CommandBars("Cell").Controls(Application.Caller(1)).Caption
Funktioniert leider nicht. da nicht der CommandBarButton mit dem entsprechenden Application.Caller(1)-Wert ausgegeben wird, sonder der CommandbarPopup mit der Nummer des Application.Caller(1) wird ausgegeben.
Kann mir jemand weiterhelfen, wie ich auf den Name der gewählten 2. Ebene komme?
Vielen Dank
Gruß Tim
Zum Besseren Verständnis ein Teil des Quelltextes:
Sub ProduktAuswahl()
Dim cmdPopup As CommandBarPopup
Dim cmdButton As CommandBarButton
Dim ProdName, Name As String
Dim x, y As Integer
With Application.CommandBars("Cell") ' Bestehendes Menü löschen
Do While .Controls.Count > 0
.Controls(1).Delete
Loop
End With
For x = 16 To 64 ' x sind die neuen CommandBarPopup
ProdName = Worksheets("Berechnungen").Cells(x, 2).Value
If ProdName "" Then
Set cmdPopup = CommandBars("Cell").Controls.Add(Type:=msoControlPopup, Before:=x - 15)
With cmdPopup
.Caption = ProdName
For y = 6 To 45 ' y sind die neuen CommandBarButtons
If Worksheets("Daten").Cells(y, Spalte).Value "" Then
Name = Worksheets("Daten").Cells(y, Spalte).Value
Set cmdButton = .Controls.Add
cmdButton.Caption = Name
cmdButton.OnAction = "Einfügen"
End If
Next y
End With
End If
Next x
End Sub
Sub Einfügen()
ActiveCell.Value = Application.CommandBars("Cell").Controls(Application.Caller(1)).Caption
End Sub