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

Forumthread: Laufzeitfehler 13 - Typen unverträglich

Laufzeitfehler 13 - Typen unverträglich
06.04.2020 17:39:19
Peter
Hallo zusammen,
ich weiß nicht voran es liegt, seit kurzem bekomme ich bei meiner Makro einen Laufzeitfehler 13 angezeigt.
Der Debugger zeigt auf den Eintrag: If c.Value "" Then
Da ich in VBA noch ganz am Anfang stehe, bitte ich Euch um Hilfe.
Sub Makro2_leere_Zeilen_ausblenden(Blatt As Worksheet)
Dim c As Range
Blatt.Unprotect ""
For Each c In Blatt.Range("A33:A892")
If c.Value  "" Then
c.EntireRow.Hidden = False
Else
c.EntireRow.Hidden = True
End If
Next c
'Application.ScreenUpdating = True   'Schaltet den Bildschirm wieder ein
'Application.Calculation = xlCalculationAutomatic 'Schaltet die automatische Neuberechnung  _
ein
' Call Calculate
Blatt.Protect Password:=""
End Sub

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich
06.04.2020 17:56:20
Nepumuk
Hallo Peter,
da steht wahrscheinlich der Fehlerwert einer Formel in der Zelle. Versuch es so:
Sub Makro2_leere_Zeilen_ausblenden(Blatt As Worksheet)
    Dim c As Range
    
    Blatt.Unprotect
    
    For Each c In Blatt.Range("A33:A892")
        c.EntireRow.Hidden = IsEmpty(c.Value)
    Next c
    
    'Application.ScreenUpdating = True 'Schaltet den Bildschirm wieder ein
    'Application.Calculation = xlCalculationAutomatic 'Schaltet die automatische Neuberechnung ein
    ' Call Calculate
    
    Blatt.Protect
End Sub

Gruß
Nepumuk
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich
06.04.2020 19:59:57
Peter
Hallo Nepumuk,
danke für Deine Antwort, leider passiert nichts.
Es werden keine Zeilen die die Bedingung ( "") erfüllen ausgeblendet.
Gruß
Peter S
AW: Laufzeitfehler 13 - Typen unverträglich
06.04.2020 20:13:05
Peter
Hallo Nepumuk,
du hattest Recht!
In der Spalte gibt es ein #NV.
Kann man die Fehler Rückmeldung übergehen, damit nach den o.g. Bedingungen die Zeilen ausgeblendet werden.
Die Spalte enthält pro Zeile Formeln, ich müsste jeder einzelne Formel mit Wennfehler() abfangen.
Gruß
Peter S
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich
07.04.2020 08:24:14
Daniel
Hi
Verwende mal in deinem ursprünglichen Code
c.Text anstelle von c.Value.
Mit c.Text bekommst du den Zellinhalt immer als Text, egal was drinsteht, so wie er in der Tabelle angezeigt wird.
Damit vermeidest du den Datentyp "Fehler", welcher in VBA immer etwas anders behandelt werden muss als die normalen Typen (Zahl, Text, Wahrheitswert).
Gruß Daniel
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich
07.04.2020 11:09:01
Peter
Hallo Daniel,
es funktioniert, vielen Dank.
Gruß
Peter S
AW: Laufzeitfehler 13 - Typen unverträglich
07.04.2020 08:53:00
Nepumuk
Hallo Peter,
mein Fehler. So natürlich:
c.EntireRow.Hidden = Not IsEmpty(c.Value)

Gruß
Nepumuk
AW: Laufzeitfehler 13 - Typen unverträglich
07.04.2020 11:12:07
Peter
Hallo Nepumuk,
es werden ALLE Zeilen zwischen 33:892 ausgeblendet.
Es sollten aber nur die ausgeblendet werden , die die Bedingung erfüllen.
Kann man die Bedingung noch mit einarbeiten?
Gruß
Peter S
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich
07.04.2020 11:14:42
Nepumuk
Hallo Peter,
welche Bedingung außer "nicht leer"?
Gruß
Nepumuk
AW: Laufzeitfehler 13 - Typen unverträglich
07.04.2020 11:28:10
Peter
Hallo Nepumuk,
wenn die in der Zelle vorhandene Formel keinen Wert ausgibt, soll die Zeile
ausgeblendet werden.
Gruß
Peter S
AW: Laufzeitfehler 13 - Typen unverträglich
07.04.2020 11:49:40
Nepumuk
Hallo Peter,
so?
Sub Makro2_leere_Zeilen_ausblenden(Blatt As Worksheet)
    Dim c As Range
    
    Blatt.Unprotect
    
    For Each c In Blatt.Range("A33:A892")
        c.EntireRow.Hidden = c.Text = vbNullString
    Next c
    
    Blatt.Protect
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich
07.04.2020 13:37:19
Peter
Hallo Nepumuk,
es funktioniert, vielen Dank!
Gruß
Peter S
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 13 - Typen unverträglich in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Finde dein Makro: Suche im Projektfenster nach dem Modul, das dein Makro enthält.

  3. 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
  4. 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
  5. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige