Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

VBA: Button erstellen und Makro zuweisen
#1
Hallo zusammen,

ich bin dabei in einem Excel eine Art Navigationsleiste mittels CommandButtons aufzubauen.
Die Erstellung soll hierbei per Code geschehen.

Das der Button erstellt wird, bekomme ich hin, allerdings bereitet mir der "OnAction"-Befehl Probleme.
Ich habe ein Navigationsmodul (in dem die unten vorgestellte Prozedur ebenfalls beheimatet ist) und möchte hardcoden, welches Makro bei welchem Button hinterlegt werden soll.

Anbei der Code bis hierhin:
Code:
'Fügt die Buttons für die Navigation ein
Public Sub Navigationsbuttons()
Dim ws As Worksheet
Dim Button As OLEObject
Dim ButtonName As String
Dim Tabelle As String
Dim i As Byte

'Belegt die benötigten Variablen
Set ws = ThisWorkbook.ActiveSheet
Tabelle = ws.CodeName

'Schleife, um die Namen der Buttons zu generieren
For i = 1 To 5
  If i = 1 Then
    ButtonName = "Startseite"
  ElseIf i = 2 Then
  ElseIf i = 3 Then
  ElseIf i = 4 Then
  ElseIf i = 5 Then
  End If
 
  'Sucht nach dem entsprechenden Button
  On Error Resume Next
  Set Button = ws.OLEObjects(ButtonName)
  On Error GoTo 0
 
  'Wenn der Button existiert, wird der Schritt übersprungen, ansonsten wird er erstellt und hinzugefügt
  If Button Is Nothing Then
    Set Button = ws.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=100, Top:=100, Width:=100, Height:=30)
    With Button
      .Name = WorksheetFunction.Concat("cmdNavi_", ButtonName)  'Name des Buttons
      .Object.Caption = ButtonName  'Beschriftung des Button
      .Object.OnAction = "Navigation.NavigationTabelle1"   'hier bereitet mir der Code Probleme
    End With
  End If
 
Next i

End Sub
Ich erhalte Laufzeitfehler 438 - diese Eigenschaft würde nicht unterstützt.

Kann mir hier jemand etwas auf die Sprünge helfen, wie ich das Makro dem Button hinzufügen kann?

Danke euch schonmal im Voraus und schönen Rest-Sonntag.

LG,
Domi
Antworten Top
#2
Hallo

ich denke du nimmst hier mit dem Active(x) den falschen Button. Nimm mal den aus Formularsteuerelemete.

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • HAMRacer44
Antworten Top
#3
Hi Elex,

danke für deine Antwort.
Dann werde ich das Formularsteuerelement nutzen, dachte es ginge auch mit dem Active-X-Element.

Danke nochmal und schönen Sonntag,
Domi
Antworten Top
#4
Hi,

gibt es Grund dafür, die Buttons erst zur Laufzeit zu erstellen? Ich würde sie von Anfang an einmalig erstellen und dann zur Not xxx.Visible auf False setzen. Damit kann man sich dann das Erstellen per VBA ersparen.

Und wenn eine neue Datei erstellt werden muss, dann würde ich eine Vorlage mit den Buttons erstellen und diese verwenden.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste