Laufzeitfehler 13 - Typen unverträglich in Excel VBA beheben
Schritt-für-Schritt-Anleitung
-
Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
-
Finde dein Makro: Suche im Projektfenster nach dem Modul, das dein Makro enthält.
-
Bearbeite die Fehlermeldung: Wenn du den Laufzeitfehler 13 - Typen unverträglich erhältst, liegt das oft an einer falschen Datentypbehandlung. Ändere die Zeile, die den Fehler auslöst, wie folgt:
c.EntireRow.Hidden = IsEmpty(c.Value)
oder alternativ:
c.EntireRow.Hidden = c.Text = vbNullString
-
Füge Fehlerbehandlung hinzu: Du kannst auch eine Fehlerbehandlung hinzufügen, um sicherzustellen, dass dein Code nicht abbricht, wenn ein Fehler auftritt:
On Error Resume Next
-
Führe das Makro aus: Teste dein Makro, indem du es im VBA-Editor ausführst (F5).
Häufige Fehler und Lösungen
-
Fehlerwert in Zellen: Wenn in Zellen Fehlerwerte wie #NV vorhanden sind, kann dies den Laufzeitfehler 13 verursachen. Verwende If Not IsError(c.Value) Then, um diese Fehler zu umgehen.
-
Falscher Datentyp: Achte darauf, dass du die richtigen Datentypen verwendest. Verwende c.Value für Werte und c.Text für Textdarstellungen, um typenspezifische Probleme zu vermeiden.
Alternative Methoden
-
Verwende Application.Calculation: Manchmal kann es hilfreich sein, die Neuberechnung für bestimmte Berechnungen zu steuern:
Application.Calculation = xlCalculationManual
' dein Code hier
Application.Calculation = xlCalculationAutomatic
-
Fehlerüberprüfung mit WennFehler(): Du kannst in deinen Excel-Formeln die Funktion WENNFEHLER() verwenden, um sicherzustellen, dass Formelfehler nicht in deinem VBA-Code auftauchen.
Praktische Beispiele
Hier ist ein Beispiel für ein verbessertes Makro, das leere Zeilen in einem bestimmten Bereich ausblendet:
Sub Makro2_leere_Zeilen_ausblenden(Blatt As Worksheet)
Dim c As Range
Blatt.Unprotect ""
For Each c In Blatt.Range("A33:A892")
If Not IsError(c.Value) Then
c.EntireRow.Hidden = c.Text = vbNullString
End If
Next c
Blatt.Protect Password:=""
End Sub
Tipps für Profis
-
Debugging: Nutze den Debugger im VBA-Editor, um den Code Schritt für Schritt durchzugehen. Setze Breakpoints, um den Status von Variablen zu überprüfen.
-
Sauberer Code: Halte deinen Code sauber und gut kommentiert. Dokumentiere, warum du bestimmte Schritte unternommen hast, um die Wartbarkeit zu erhöhen.
FAQ: Häufige Fragen
1. Was verursacht den Laufzeitfehler 13 in Excel VBA?
Der Laufzeitfehler 13 tritt auf, wenn es eine Typenunverträglichkeit im VBA-Code gibt, häufig aufgrund von unterschiedlichen Datentypen wie Text und Zahl.
2. Wie kann ich den Laufzeitfehler 13 beheben?
Überprüfe deinen Code auf falsche Datentypen und verwende geeignete Bedingungen, um sicherzustellen, dass nur gültige Werte verarbeitet werden. Nutze IsError() und IsEmpty() für die Fehlerüberprüfung.
3. Was ist der Unterschied zwischen Value und Text in VBA?
Value gibt den tatsächlichen Wert einer Zelle zurück, während Text den angezeigten Text in der Zelle zurückgibt, was nützlich sein kann, um Typenunverträglichkeiten zu vermeiden.
4. Wie kann ich Fehlerwerte in Zellen ignorieren?
Du kannst die Funktion IsError() verwenden, um zu überprüfen, ob ein Wert ein Fehler ist, und diesen gegebenenfalls ignorieren.