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

Forumthread: Laufzeitfehler 13 - Typen unverträglich....Warum?

Laufzeitfehler 13 - Typen unverträglich....Warum?
22.09.2016 09:25:48
Harald
Hallo,
jetzt muss ich Euch leider nochmal nerven...
Ich habe folgendes Problem:
Ich habe in der Spalte O eine Formel hinterlegt, die prüft, ob eingetragene Uhrzeiten in Spalte D größer als 12:00 Uhr sind und ob in der Spalte R für die jeweilige Zeile ein X eingetragen ist. Ist die Zeit größer als 12:00 Uhr und es ist ein X eingetragen, soll O den Wert 1 ausgeben, sonst 0 sein.
=WENN(UND(R12="X";D12>12/24);1;0)
Wenn der Wert 1 zurückgegeben wird, möchte ich eine Msg-Box anzeigen lassen, die auf den Fehler hinweist.
Mein Makro dazu:
Private Sub Worksheet_Calculate()
If Range("O12:O42").Value > 0 Then
MsgBox "Sie arbeiten am Faschingsdienstag bzw. am Kirchweihdienstag länger als 12.00 Uhr!",  _
vbCritical
End If
End Sub
Ich bekomme aber immer einen Laufzeitfehler 13 - Typen unverträglich zurück. Woran kann das liegen?
Herzlichen Dank im Voraus für die Antworten!
Viele Grüße
harald
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Laufzeitfehler 13 - Typen unverträglich....Warum?
22.09.2016 09:51:19
Michael
Hi,
das liegt daran, daß Range("O12:O42") 30 Werte sind, die Du mit nur EINEM Wert vergleichst.
Vermutlich bremst Du Excel mit dem Worksheet_Calculate aus, weil das bei JEDER Berechnung ausgeführt wird. Ich fände es geschickter, die Zellen R12:R42 bzw. D12:D42 bei der EINGABE abzufragen.
Schöne Grüße,
Michael
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich....
22.09.2016 09:56:49
Daniel
Hi
der Fehler kommt, weil der Vergleich mit > versucht, zwei Einzelwerte miteinander zu vergleichen.
dein Range("O12:O42").Value ist aber kein Einzelwert, sondern eine Gruppe (Array) mit 31 Einzelwerten, und diese Gruppe kannst du nicht mit einem Einzelwert vergleichen, daher der Fehler.
Du könntest hier aber mit ZählenWenn ermitteln, wie oft die genannte Bedingung im Bereich erfüllt ist und dann entsprechend reagieren:
IF Worksheetfunction.CountIf(Range("O12:O42"), ">0") > 0 Then
Gruß Daniel
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich....
22.09.2016 10:05:15
Harald
Hallo! Ganz herzlichen Dank für Eure Hilfe!
AW: Laufzeitfehler 13 - Typen unverträglich....
22.09.2016 10:37:16
Harald
Hallo Daniel!
Jetzt habe ich das Problem, dass er mir die Meldung immer anzeigt wenn ich irgendetwas eingebe...
Gruß
Harald
AW: Laufzeitfehler 13 - Typen unverträglich....
22.09.2016 11:05:33
Daniel
Hi
dann ändere die Bedingung entsprechend ab.
mehr kann ich dir jetzt auch nicht sagen, weil ich nicht weiß, was du dort eingibst und wann die Meldung angezeigt werden soll.
Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 13 - Typen unverträglich in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Formel Überprüfen: Stelle sicher, dass die Formel in Spalte O korrekt ist. Die Formel sollte so aussehen:

    =WENN(UND(R12="X";D12>12/24);1;0)

    Diese prüft, ob der Wert in Spalte D größer als 12:00 Uhr ist und ob in Spalte R ein "X" steht.

  2. VBA Code Anpassen: Der folgende VBA-Code kann verwendet werden, um die MsgBox nur dann anzuzeigen, wenn tatsächlich Werte in Spalte O größer als 0 sind:

    Private Sub Worksheet_Calculate()
       If WorksheetFunction.CountIf(Range("O12:O42"), ">0") > 0 Then
           MsgBox "Sie arbeiten am Faschingsdienstag bzw. am Kirchweihdienstag länger als 12.00 Uhr!", vbCritical
       End If
    End Sub
  3. Fehlerbehandlung Implementieren: Füge Fehlerbehandlungsroutinen hinzu, um den Laufzeitfehler 13 zu vermeiden. Dies kann durch das Überprüfen des Datentyps erfolgen.


Häufige Fehler und Lösungen

  • Fehlerhafte Bereichszuweisung: Wenn Du versuchst, den gesamten Bereich "O12:O42" mit einem einzelnen Wert zu vergleichen, tritt der Laufzeitfehler 13 auf. Verwende stattdessen WorksheetFunction.CountIf, um die Anzahl der erfüllten Bedingungen zu zählen.

  • Falsche Verwendung von Excel-Funktionen: Stelle sicher, dass die verwendeten Funktionen im richtigen Kontext stehen. Der Vergleich Range("O12:O42").Value > 0 führt zu einem Typen unverträglich Laufzeitfehler, weil Du ein Array mit einem Wert vergleichst.


Alternative Methoden

  • ZählenWenn-Funktion: Nutze die ZählenWenn-Funktion, um die Anzahl der Zellen zu zählen, die die Bedingung erfüllen:

    If WorksheetFunction.CountIf(Range("O12:O42"), ">0") > 0 Then
  • Direkte Abfrage der Zellen: Anstatt den gesamten Bereich zu prüfen, kannst Du die Werte in den einzelnen Zellen abfragen, um den Laufzeitfehler 13 zu vermeiden.


Praktische Beispiele

  1. Beispiel für die Verwendung der ZählenWenn-Funktion:

    If WorksheetFunction.CountIf(Range("O12:O42"), ">0") > 0 Then
       MsgBox "Es gibt Werte größer als 0 in Spalte O."
    End If
  2. Direkte Zellprüfung:

    For i = 12 To 42
       If Range("O" & i).Value > 0 Then
           MsgBox "Wert in O" & i & " ist größer als 0."
       End If
    Next i

Tipps für Profis

  • Debugging Nutzen: Verwende das Debugging-Tool in Visual Basic for Applications (VBA), um den Code Schritt für Schritt durchzugehen und den genauen Punkt zu finden, an dem der Laufzeitfehler 13 auftritt.

  • Variablen Typen Festlegen: Stelle sicher, dass Du Deine Variablen in VBA korrekt typisierst, um Typen unverträglich Fehler zu vermeiden. Beispiel:

    Dim cellValue As Variant
    cellValue = Range("O12").Value

FAQ: Häufige Fragen

1. Was bedeutet Laufzeitfehler 13?
Der Laufzeitfehler 13 tritt auf, wenn in VBA ein Datentyp nicht mit einem anderen kompatibel ist, z.B. wenn ein Array mit einem einzelnen Wert verglichen wird.

2. Wie kann ich den Laufzeitfehler 13 beheben?
Überprüfe Deine Formeln und VBA-Codes auf falsche Vergleiche. Nutze Funktionen wie ZählenWenn, um die Anzahl der erfüllten Bedingungen zu zählen, anstatt einen gesamten Bereich mit einem Wert zu vergleichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige