Warum tritt Fehler 400 auf, wenn ein Excel-Makro per Button gestartet wird, obwohl es schrittweise mit F8 funktioniert?

Antwort

Der Fehler 400 in Excel-Makros ist ein allgemeiner Laufzeitfehler, der oft auftritt, wenn etwas im Code nicht wie erwartet funktioniert. Dass der Fehler nur beim Starten über den Button und nicht beim schrittweisen Ausführen mit F8 auftritt, deutet meist auf einen Unterschied im Kontext oder in den Voraussetzungen hin. Hier sind die häufigsten Ursachen und Lösungsansätze: **1. Fehlende oder falsche Auswahl (Selection/ActiveCell):** Beim Ausführen mit F8 ist oft die richtige Zelle oder das richtige Blatt aktiv. Beim Start über den Button kann das anders sein. Prüfe, ob dein Makro mit `Selection`, `ActiveCell` oder ähnlichen Objekten arbeitet. **Lösung:** Arbeite möglichst mit expliziten Verweisen wie `Worksheets("Tabelle1").Range("A1")` statt mit `Selection`. **2. Arbeitsblatt nicht aktiv:** Wenn dein Makro auf ein bestimmtes Blatt zugreift, stelle sicher, dass dieses Blatt auch aktiviert wird, bevor du darauf zugreifst. **Beispiel:** ```vba Worksheets("Tabelle1").Activate Range("A1").Value = "Test" ``` **3. Button ist ein ActiveX- oder Formularsteuerelement:** Je nach Typ des Buttons kann der Kontext unterschiedlich sein. Prüfe, ob der Code im richtigen Modul (z.B. in einem normalen Modul, nicht im Tabellenblatt-Modul) liegt. **4. Fehlerbehandlung:** Füge am Anfang deines Makros eine Fehlerbehandlung ein, um die genaue Fehlerzeile zu finden: ```vba On Error GoTo Fehler ' ... dein Code ... Exit Sub Fehler: MsgBox "Fehler in Zeile: " & Erl & vbCrLf & Err.Description ``` **5. Übergabeparameter:** Wenn dein Makro Parameter erwartet, der Button aber keine übergibt, kann das zu Fehlern führen. **6. Geschützte Blätter oder Zellen:** Wenn das Arbeitsblatt oder bestimmte Zellen geschützt sind, kann das Makro beim Schreiben/Ändern einen Fehler verursachen. **Fazit:** Überprüfe deinen Code auf die oben genannten Punkte. Besonders häufig ist der Fehler bei der Verwendung von `Selection` oder `ActiveCell`. Wenn du möchtest, kannst du den relevanten Codeabschnitt posten (ohne Aufforderung), dann kann gezielter geholfen werden. Weitere Infos zu Fehler 400 findest du auch bei Microsoft: [https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/error-400](https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/error-400)

Neue Frage stellen

Verwandte Fragen

Warum funktioniert das Excel-Makro mit Dim zeilen as String, Choose und Rows(zeilen).Hidden = True nicht?

Der Fehler liegt daran, dass du die Variable `zeilen` als `String` deklarierst, aber die Funktion `Rows(zeilen).Hidden = True` einen Bereich erwartet, der als Zeilenreferenz interpretiert werden kann.... [mehr]

Wie kann ein Excel-Makro in allen Blättern, auch ausgeblendeten, das Gitternetz ausblenden?

Um in allen Arbeitsblättern einer Excel-Arbeitsmappe – auch in ausgeblendeten – das Gitternetz auszublenden, kannst du folgendes VBA-Makro verwenden: ```vba Sub GitternetzInAllenBlae... [mehr]

Wie kann man mit einem Excel-Makro in allen Blättern Gitternetzlinien und Überschriften ausblenden?

Hier ist ein VBA-Makro, das in allen Arbeitsblättern einer Excel-Arbeitsmappe sowohl die Gitternetzlinien als auch die Überschriften (Zeilen- und Spaltenköpfe) ausblendet: ```vba Sub G... [mehr]

Wie übergibt man zwei Variablen von einem Excel-Makro an ein anderes?

Um zwei Variablen von einem Excel-Makro an ein anderes zu übergeben, gibt es mehrere Möglichkeiten. Die gängigste und sauberste Methode ist, das zweite Makro als **Sub** oder **Function... [mehr]

Gilt Application.ScreenUpdating=false auch für aufgerufene Makros in Excel?

Ja, der Befehl `Application.ScreenUpdating = False` gilt global für die gesamte Excel-Anwendung und damit auch für alle Makros, die danach ausgeführt werden – unabhängig davo... [mehr]

Wie prüfe ich in einem Excel-Makro, ob das aktive Blatt Sheets("Projekt") ist?

Um in einem Excel-Makro (VBA) zu prüfen, ob das aktive Blatt das Blatt mit dem Namen "Projekt" ist, kannst du folgenden Code verwenden: ```vba If ActiveSheet.Name = "Projekt"... [mehr]

Wie speichere ich mit einem Excel-Makro die aktuelle Datei unter einem neuen Namen im gleichen Verzeichnis?

Um die aktuelle Excel-Datei per Makro (VBA) unter einem neuen Namen im gleichen Verzeichnis zu speichern, kannst du folgenden VBA-Code verwenden: ```vba Sub SpeichernUnterNeuemNamen() Dim pfad As... [mehr]

Kann ein Excel-Makro in ausgeblendeten Blättern Zeilen oder Spalten ein- und ausblenden oder Zellen bzw. Bereiche löschen?

Ja, ein Excel-Makro (VBA-Code) kann auch in ausgeblendeten Blättern Zeilen oder Spalten ein- und ausblenden sowie Zellen oder Bereiche löschen. Das Makro kann auf alle Arbeitsblätter zu... [mehr]

Funktioniert im Excel-Makro der Befehl: Call Anpassen(nbr+1)?

Ja, das ist im Prinzip möglich, aber es gibt ein paar Dinge zu beachten: 1. **Syntax**: In VBA (Excel-Makros) kannst du eine Prozedur mit Parametern aufrufen, indem du die Argumente in Klammern... [mehr]

Was bedeutet im Excel-Makro CommandBars("Ply")?

Im Excel-Makro bezieht sich `CommandBars("Ply")` auf die sogenannte „Blattregisterkarten-Kontextmenüleiste“. Das ist das Kontextmenü, das erscheint, wenn du mit der rec... [mehr]