Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Erste Gehversuche in VBA- Makro mit Button starten

Erste Gehversuche in VBA- Makro mit Button starten
29.07.2005 08:49:05
Klaus
Moin VBA-ler!
motiviert durch erste Erfolge im verbessern von Makrorecorder-Codes habe ich mein erstes Makro komblett "per Hand" geschrieben. In Modul 1 steht:
Sub EinAusBlenden()
If Rows("23:85").EntireRow.Hidden = True Then
Rows("23:85").EntireRow.Hidden = False
Else
Rows("23:85").EntireRow.Hidden = True
End If
End Sub

und funktioniert auch so wie es soll. Zwecks benutzerfreundlichkeit habe ich jetzt in Tabelle 1 einen Commandbutton erstellt:

Private Sub CommandButton2_Click()
Application.Run ("EinAusBlenden")
End Sub

Ein Click auf diesen führt nun zu der Fehlermeldung "Laufzeitfehler '1004': Die Hidden-Eigenschaft des Range-Objektes kann nicht festgelegt werden."
Warum? Großes Fragezeichen - der Button macht doch nichts weiter als das Makro aufzurufen, und wenn ich es selbst aufrufe funktioniert es ohne weiteres!
Bitte um Erleuchtung,
Dank und Gruß,
Klaus M.
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erste Gehversuche in VBA- Makro mit Button starten
29.07.2005 08:50:10
Dr.
Hi,
statt "Application.Run ("EinAusBlenden")" schreibe einfach "EinAusBlenden".
Leider nicht die Lösung
29.07.2005 09:06:45
Klaus
Hi Dr,
das geht nicht, gibt mit einen "Fehler beim Kompilieren: Erwartet: Zeilennummer oder Sprungmarke oder Anweisungsende"
Trotzdem Danke
Klaus M.
AW: ohne Auführungszeichen! - o.T.
29.07.2005 09:09:51
Matthias
:-)
Anzeige
Ja, klappt aber noch nicht
29.07.2005 09:43:37
Klaus
Hihi, ich hatte wirklich die "" mitgetippt - blöder Fehler.
Soweit so gut, Makros aus Buttons aufrufen kann ich jetzt - aber das war auch nicht das Problem.
Daher Frage noch offen.
Gruß, Klaus
AW: Erste Gehversuche in VBA- Makro mit Button sta
29.07.2005 09:06:15
Matthias
Hallo Klaus,
ergänzend zu Dr.s Antwort - dein Makro lässt sich ziemlich verkürzen:

Sub EinAusBlenden()
Rows("23:85").EntireRow.Hidden = Not Rows("23:85").EntireRow.Hidden
End Sub

Gruß Matthias
Anzeige
AW: Erste Gehversuche in VBA- Makro mit Button sta
29.07.2005 09:09:31
Galenzo
und zum Aufruf:

Private Sub CommandButton2_Click()
EinAusBlenden
End Sub

oder

Private Sub CommandButton2_Click()
Call EinAusBlenden
End Sub

Viel Erfolg!
AW: Erste Gehversuche in VBA- Makro mit Button sta
29.07.2005 09:21:51
Klaus
Hallo Matthias,
Erstmal danke für die Verkürzung. Das "Not" setzt einen Zustand von True auf False nehme ich an?
Das Makro an sich ist aber nicht das Problem. Ich hab jetzt mal versucht, es direkt in den Button zu schreiben:
Tabelle1:

Private Sub CommandButton2_Click()
Rows("23:85").EntireRow.Hidden = Not Rows("23:85").EntireRow.Hidden
End Sub

Aber auch das gibt mir den Eingangs erwähnten Fehler.
Also: Wenn ich den Code in Module / Modul1 starte, funktioniert er. Wenn er in Microsoft Excel Objekte / Tabelle1 (Name) steht, dann nicht.
Noch Ideen?
Gruß
Klaus M.
Anzeige
AW: Erste Gehversuche in VBA- Makro mit Button sta
29.07.2005 09:27:00
Matthias
Hallo Klaus,
das hat glaub ich was mit der TakeFocusOnClick-Eigenschaft des Buttons zu tun. Setze die mal auf False.
Gruß Matthias
Ja, das wars! Vielen Dank! owT
29.07.2005 10:03:18
Klaus
:) *freu*
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Erste Gehversuche in VBA: Makros mit Button starten


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro über einen Button zu starten, gehe wie folgt vor:

  1. Makro erstellen: Öffne den VBA-Editor (Alt + F11) und erstelle ein neues Modul. Schreibe dein Makro, zum Beispiel:

    Sub EinAusBlenden()
        Rows("23:85").EntireRow.Hidden = Not Rows("23:85").EntireRow.Hidden
    End Sub
  2. Button einfügen: Gehe zurück zu Excel und füge einen CommandButton auf deinem Arbeitsblatt ein. Klicke mit der rechten Maustaste auf den Button und wähle „Code anzeigen“.

  3. Button-Code hinzufügen: Füge den Code zum Button hinzu, um das Makro auszuführen. Es gibt zwei Möglichkeiten:

    Private Sub CommandButton2_Click()
        EinAusBlenden
    End Sub

    oder

    Private Sub CommandButton2_Click()
        Call EinAusBlenden
    End Sub
  4. Testen: Schließe den VBA-Editor und teste den Button in deinem Arbeitsblatt.


Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Wenn du diesen Fehler erhältst, kann es daran liegen, dass der Button nicht den richtigen Fokus hat. Setze die TakeFocusOnClick-Eigenschaft des Buttons auf False.

  • Fehler beim Kompilieren: Überprüfe, ob du beim Aufruf des Makros im Button-Code versehentlich Anführungszeichen verwendet hast. Der korrekte Aufruf lautet ohne Anführungszeichen.


Alternative Methoden

Es gibt verschiedene Wege, ein Excel-Makro mit einem Button auszuführen:

  • Formulare verwenden: Du kannst auch ein Formular erstellen und die Schaltfläche dort einfügen, um das Makro zu starten.

  • Steuerelemente: Nutze ActiveX-Steuerelemente, um erweiterte Funktionen zu integrieren, wie z.B. das Setzen von Eigenschaften oder das Reagieren auf verschiedene Ereignisse.


Praktische Beispiele

Ein einfaches Beispiel für ein Makro, das Zeilen ein- oder ausblendet, könnte so aussehen:

Sub EinAusBlenden()
    Rows("23:85").EntireRow.Hidden = Not Rows("23:85").EntireRow.Hidden
End Sub

Der Button, der dieses Makro aufruft, könnte wie folgt definiert werden:

Private Sub CommandButton2_Click()
    EinAusBlenden
End Sub

Dieses Makro lässt sich einfach für verschiedene Bereiche anpassen, indem du die Zeilenangaben änderst.


Tipps für Profis

  • Makros speichern: Denke daran, deine Datei im .xlsm-Format zu speichern, um die Makros zu behalten.

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen in dein Makro ein, um unerwartete Fehler besser zu handhaben.

  • Dokumentation: Kommentiere deinen Code, um anderen (oder dir selbst) das Verständnis zu erleichtern.


FAQ: Häufige Fragen

1. Wie starte ich ein Makro mit einem Button in Excel?
Du kannst ein Makro über einen Button starten, indem du den Button in Excel einfügst und den entsprechenden VBA-Code für das Makro in das Click-Ereignis des Buttons schreibst.

2. Was ist der Unterschied zwischen Call und dem direkten Aufruf eines Makros?
Beide Methoden rufen das Makro auf, jedoch ist die Verwendung von Call optional. Du kannst das Makro auch ohne Call ausführen, solange du keine Argumente übergibst.

3. Warum funktioniert mein Makro nicht, wenn es in einem Arbeitsblatt-Modul steht?
Das könnte an einer fehlenden Eigenschaft des Buttons liegen, wie TakeFocusOnClick. Setze diese auf False, um sicherzustellen, dass der Button korrekt funktioniert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige