Hallo zusammen,
der folgende Code soll mir diverse Buttons erstellen, ausgehend von Einträgen in einer Liste (welche immer neu generiert wird).
Dazu nimmt sich das Makro den Listeneintrag (Text), benennt jeden Button entsprechend dem Listeneintrag und soll an jedem Button noch ein Makro hinterlegen.
Sodass man beim "anklicken" des Buttons zu einem Tabellenblatt wechselt, welches den gleichen Namen hat wie der Listeneintrag.
Das Erstellen und Beschriften funktioniert. Mit der markierten Zeile (NewButton.OnAction ...) bekomme ich allerdings die Fehlermeldung "Die OnAction-Eigenschaft des Button-Objekts kann nicht festgelegt werden" - bin mittlerweile etwas am Verzweifeln...
Vielen herzlichen Dank im Voraus!
Sub generate_Buttons()
'define table for buttons
Set Sheet = ThisWorkbook.Worksheets("Sheet3")
'start values für references --> Cells(row,column)
Dim column As Variant
Dim row As Variant
column = 1 'Refferenz zu den (zu übernehmenden) Zellen
row = 2
'Dim Button As Variant
Dim NewButton As Object
Dim buttonHigh As Integer
Dim buttonWidth As Integer
Dim actualX As Integer
Dim actualY As Integer
buttonStart = 10
buttonSpacing = 10
buttonHigh = 20
buttonWidth = 150
actualX = 150 'Abstand zum linken Rand
actualY = buttonStart
' process last valued cell
lastRow = Sheet.Cells.SpecialCells(xlCellTypeLastCell).row
'error exception for empty table
If lastRow = Emtpy Then
'bricht aktuelle Sub ab
Else
For actualRow = row To lastRow
'generate a new button
Set NewButton = Sheet.Buttons.Add(actualX, actualY, buttonWidth, buttonHigh)
NewButton.Caption = Sheet.Cells(actualRow, column).Value
Dim MethodeXY As Variant
MethodeXY = Sheet.Cells(actualRow, column).Value
NewButton.Font.Bold = True
NewButton.OnAction = Sheets(MethodeXY).Select
'Bei "Klick" soll das entsprechende Tabellenblatt angewählt werden
'prepare for next generated button
actualY = actualY + buttonHigh + buttonSpacing
Next
End If
End Sub
|