Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Commandbutton zuweisen

Forumthread: Makro Commandbutton zuweisen

Makro Commandbutton zuweisen
27.01.2004 19:29:08
Olaf
hallo zusammen,
ich möchte einem per Makro in ein Tabellenblatt eingefügten Commandbutton ein Makro zuweisen.
Leider lässt sich die OnAction Eigenschaft nicht direkt ansprechen.
Hintergund ist der, dass ich ein Tabellenblatt mit Steuerelementen komplett per Makro erzeugen möchte.
Für einen Tipp wäre ich echt dankbar, da ich jetzt schon ziemlich lange nach eine Lösung suche.
Gruß, Olaf
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Commandbutton zuweisen
27.01.2004 19:36:27
Josef Ehrensberger
Hallo Olaf!
Im Bearbeitungsmodus (Geodreieck-Symbol in der Steuerelemente-Leiste)
Rechtsklick auf den Button > Code anzeigen.
Im VBA - Editor schreibst Du nun zwischen den bereits
vorhandenen Code, deine Anweisungen.

Private Sub CommandButton1_Click()
'Dein Code
End Sub

Gruß Sepp
Anzeige
AW: Makro Commandbutton zuweisen
27.01.2004 19:47:09
Olaf
Hallo Sepp,
vielen Dank für Deinen schnellen Tipp.
Aber das ist nicht das, was ich suche.
Ich erzeuge mit eine Makro das Tabellenblatt und die Steuerelemente. Dann soll das Makro dem eingefügten Commandbutton ein Makro zuweisen.
"Von Hand" soll da gar nicht eingegriffen werden.
Gruß, Olaf
Anzeige
AW: Makro Commandbutton zuweisen
27.01.2004 20:01:08
K.Rola
Hallo,
meinst du einen aus den Forms: Forms.CommandButton.1 ?
Gruß K.Rola
AW: Makro Commandbutton zuweisen
27.01.2004 22:16:42
Olaf
Hallo K.Rola,
genau den meine ich. Der müsste doch laut Excel-Hilfe der richtige sein.
Der Tipp von Dieter funktioniert, ist aber in der Hilfe so nicht nachzulesen.
Gruß, Olaf
AW: Makro Commandbutton zuweisen
27.01.2004 22:37:35
K.Rola
Hallo,
was Dieter vorgeschlagen hat klappt so nicht mit Commanbutton. Das ist
da etwas komplexer.
Gruß K.Rola
Anzeige
AW: Makro Commandbutton zuweisen
27.01.2004 22:41:45
Olaf
Hallo K.Rola,
wie erfolgt denn da die Zuweisung ?
Letztendlich muss ja auch hier eine Prozedur zugewiesen werden.
Gruß,
Olaf
AW: Makro Commandbutton zuweisen
27.01.2004 22:47:57
K.Rola
Hallo,
die Prozedur für Commandbutton steht im Klassenmodul der jeweiligen Tabelle.
Füg mal einen Commandbutton ein und Doppelklick, das siehst du den Coderahmen.
Gruß K.Rola
Anzeige
AW: Makro Commandbutton zuweisen
27.01.2004 23:03:04
Olaf
Hallo K.Rola,
jo, ich hab´s kapiert.
Jetzt habe ich aber das Tabellenblatt gerade erst neu erzeugt. Sein Klassenmodul wird damit automatich auch neu erzeugt.
Wie kriege ich meine fertige Prozedur jetzt in dieses Klassenmodul ?
Ein einfaches importieren der Klassendatei bringt nix, weil das Modul dann ja separat und nicht als Klassenmodul des Tabellenblattes existiert.
Seufz... :-)
Gruß, Olaf
Anzeige
AW: Makro Commandbutton zuweisen
27.01.2004 23:45:35
K.Rola
Hallo,
ein Klassenmodul im Tabellenblatt kannst du eh nicht importieren.
Du kanns den Code zur Laufzeit erzeugen, aber das führt zu weit.
Gruß K.Rola
AW: Makro Commandbutton zuweisen
27.01.2004 23:55:29
Olaf
Hallo K.Rola,
schade eigentlich. Ich glaube, ich muss mir die Sache noch einmal neu durch den Kopf gehen lassen. Aber Du hast mich zumindest schonmal in die richtige Richtung gebracht.
Vielen Dank,
Olaf
Anzeige
AW: Makro Commandbutton zuweisen
28.01.2004 00:30:29
K.Rola
Hallo,
ich weiß nicht, was du vorhasst, aber warum willst du unbedingt alles zur Laufzeit erzeugen? Das ist naturgemäß wesentlich aufwändiger, als die Objekte zur Entwurfszeit
zu erstellen und die Eigenschaften einzustellen.
Ggf. gibts ja einen anderen Weg oder einen gesunden Kompromiss.
Gruß K.Rola
Anzeige
AW: Makro Commandbutton zuweisen
28.01.2004 12:56:00
Olaf
Hallo K.Rola,
ich habe das Problem, dass ich in einer größeren Arbeitsmappe, die mehrere Leute mit jeweils eigenen Daten nutzen, einzelne Tabellenblätter (mit Steuerelemententen) hinzufügen oder austauschen können muss.
Stelle ich auf den Tabellenblättern feste Bezüge zu anderen Tabellenblättern her, um die Steuerelemente zu "betanken" und stelle nur diese Tabellenblätter den anderen Nutzern zur Verfügung (bzw. lasse sie in deren Arbeitsmappen importieren) stimmen all diese Bezüge natürlich nicht mehr. Deshalb der Umweg über die automatische Erstellung der Tabellenblätter.
Meine Erfahrungen mit VBA sind nur begrenzt. Ich habe früher mal mit anderen Programmiersprachen entwickelt, auch objektorientiert. Bei VBA mach ich wahrscheinlich viele Dinge zu umständlich, wühle mich immer durch die Hilfedateien und fluche ständig über die "seltsame" Objektorientierung von VBA :-)
Gruß, Olaf
Anzeige
AW: Makro Commandbutton zuweisen
27.01.2004 20:57:21
Dieter Klemke
Hallo Olaf,
wenn du einen Button aus der älteren Symbolleiste "Formular" verwendest, dann kannst du dein Problem z.B. folgendermaßen lösen:

Sub Button_erzeugen()
Dim cmd As Button
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
Set cmd = ws.Buttons.Add(Left:=120.0, _
Top:=90.0, _
Width:=100.0, _
Height:=40.0)
cmd.Caption = "Neu"
cmd.OnAction = "TestProgramm"
End Sub


Sub TestProgramm()
MsgBox "TestProgramm"
End Sub

MfG
Dieter
Anzeige
AW: Makro Commandbutton zuweisen
27.01.2004 22:14:45
Olaf
Hallo Dieter,
vielen Dank für Deinen Tipp.
Es funktioniert und damit bin ich schon einmal einen Riesenschritt weiter.
In der Hilfe steht Buttons unter Ausgeblendete Eigenschaften und Methoden
Ist die Kompatibilität zu Excel 2000 und XP ok ?
Als Ersatz sind hier die ActiveX-Steuerelemente angegeben und genau da bin ich nicht weitergekommen.
Mit pSheet.OLEObjects.Add ClassType:="Forms.CommandButton.1" ... kann ich zwar eine Schaltfläche erzeugen, ich kann ihr aber
keine Prozedur zuweisen, die ausgeführt werden soll.
Ich kann der Schaltfläche noch nicht einmal manuell auf dem Tabellenblatt ein Makro zuweisen. Der Eintrag ist ausgeblendet.
Gruß,
Olaf
Anzeige
AW: Makro Commandbutton zuweisen
28.01.2004 12:36:51
Dieter Klemke
Hallo Olaf,
das was ich dir geschickt habe, funktioniert auch unter Excel 2000 und Excel XP einwandfrei. Allerdings muss man sich ein Problem dabei klarmachen: Es handelt sich hierbei um die Objekttechnik aus der Zeit von Excel 5. Diese Technik wurde beim Übergang zu Excel 97 abgelöst. Allerdings wird bislang die alte Technik von Microsoft weiterhin unterstützt (s. z.B. die verborgenen Einträge im Objektkatalog zum Button-Objekt).
Es könnte aber der Tag kommen, an dem Microsoft die Sache über Bord wirft.
Vielleicht hat dein Programm bis dahin aber sein Geld schon verdient.
MfG
Dieter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Makro Commandbutton zuweisen in Excel


Schritt-für-Schritt-Anleitung

  1. Excel öffnen: Starte Excel und öffne die Arbeitsmappe, in die du einen Commandbutton einfügen möchtest.

  2. Entwicklertools aktivieren: Falls die Entwicklertools nicht sichtbar sind, aktiviere sie über Datei > Optionen > Menüband anpassen und setze ein Häkchen bei "Entwicklertools".

  3. Button einfügen:

    • Wechsle zu den Entwicklertools und klicke auf "Einfügen".
    • Wähle unter ActiveX-Steuerelemente den CommandButton aus.
    • Klicke auf die Stelle im Tabellenblatt, wo der Button platziert werden soll.
  4. Makro zuweisen: Um das Makro einem Button zuzuweisen, gehe in den VBA-Editor:

    • Rechtsklicke auf den Button und wähle "Code anzeigen".
    • Füge den gewünschten Code in die Sub-Prozedur ein. Zum Beispiel:
      Private Sub CommandButton1_Click()
       ' Dein Makro-Code hier
      End Sub
  5. Speichern: Vergiss nicht, die Arbeitsmappe im Makro-fähigen Format (.xlsm) zu speichern.


Häufige Fehler und Lösungen

  • Makro zuweisen funktioniert nicht: Stelle sicher, dass du im richtigen Modus bist. Der Button muss im Entwurfsmodus bearbeitet werden. Klicke auf "Entwurfsmodus" in den Entwicklertools.

  • Button nicht sichtbar: Überprüfe, ob der Button korrekt eingefügt wurde und nicht hinter anderen Objekten verborgen ist.

  • OnAction-Eigenschaft nicht zuweisbar: Bei ActiveX-Buttons kann die OnAction-Eigenschaft nicht verwendet werden. Du musst direkt im VBA-Editor die Prozedur angeben.


Alternative Methoden

  • Excel VBA Button erstellen und Makro zuweisen: Anstatt einen ActiveX-Button zu verwenden, kannst du einen Button aus der Formularsteuerung nutzen. Dieser lässt sich einfacher mit der OnAction-Eigenschaft verknüpfen:
    Sub Button_erzeugen()
      Dim cmd As Button
      Dim ws As Worksheet
      Set ws = ThisWorkbook.Worksheets(1)
      Set cmd = ws.Buttons.Add(Left:=120.0, Top:=90.0, Width:=100.0, Height:=40.0)
      cmd.Caption = "Neu"
      cmd.OnAction = "TestProgramm"
    End Sub

Praktische Beispiele

  • Beispiel für ein Makro:

    Sub TestProgramm()
      MsgBox "Das Makro wurde erfolgreich ausgeführt!"
    End Sub

    Dieses Beispiel zeigt eine einfache Meldung, die beim Klicken des Commandbuttons erscheint.

  • Makro mit Button starten: Du kannst jede Art von VBA-Code in die Prozedur einfügen, um komplexere Aufgaben zu automatisieren, wie Daten sortieren oder Berechnungen durchführen.


Tipps für Profis

  • Verwende Klassenmodule: Wenn du mehrere Buttons hast, könnte es sinnvoll sein, Klassenmodule zu verwenden, um die Logik zu kapseln und die Wartbarkeit zu verbessern.

  • Code zur Laufzeit erzeugen: Wenn du viele Steuerelemente dynamisch erstellen musst, kannst du dies zur Laufzeit tun. Dies ist besonders nützlich in größeren Projekten.

  • Debugging: Nutze die Debugging-Tools im VBA-Editor, um Fehler schnell zu identifizieren und zu beheben.


FAQ: Häufige Fragen

1. Wie füge ich einen Excel Button ein? Du kannst einen Button über die Entwicklertools unter "Einfügen" auswählen und auf das Arbeitsblatt ziehen.

2. Wie kann ich einem Excel Button ein Makro zuweisen? Im VBA-Editor kannst du die Prozedur für den Button definieren. Bei Formularbuttons kannst du die OnAction-Eigenschaft verwenden.

3. Was ist der Unterschied zwischen ActiveX und Formularbuttons? ActiveX-Buttons bieten mehr Flexibilität und Steuerungsmöglichkeiten, während Formularbuttons einfacher zu verwenden sind.

4. Funktioniert das in Excel 2000 oder XP? Ja, die Methoden zum Zuweisen von Makros an Buttons funktionieren auch in älteren Excel-Versionen wie 2000 und XP.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige