Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA-Laufzeitfehler 13

Forumthread: VBA-Laufzeitfehler 13

VBA-Laufzeitfehler 13
01.09.2003 14:14:28
KleinKatha
Hallo,

kann mir vielleicht jemand erklären, was der "Laufzeitfehler '13': Typen unverträglich" zu bedeuten hat?

Der Fehler trat in folgender Funktion auf:

For i = 6 To ActiveSheet.UsedRange.Rows.Count
Cells(i, 4).Value = _
Application.WorksheetFunction.SumProduct(Worksheets("AT-Teile").Range("Y:Y") = Cells(i, 1).Value, 1)
Next i

Danke
Katha
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Laufzeitfehler 13
01.09.2003 18:08:03
Nepumuk
Hallo Katha,
Auszug aus der MSDN-Library:
Visual Basic kann viele Werte konvertieren und einen bestimmtenDatentyp erzwingen und ermöglicht so Datentypzuweisungen, die in früheren Versionen nicht möglich waren. Dieser Fehler kann jedoch immer noch auftreten, und es gibt dafür die folgenden Ursachen und Lösungen:

DieVariable oderEigenschaft hat nicht den richtigen Datentyp. Eine Variable, die einen ganzzahligen Wert erwartet, kann zum Beispiel keinen Zeichenfolgenwert akzeptieren, wenn die gesamte Zeichenfolge nicht als Ganzzahl interpretiert werden kann.
Versuchen Sie, nur kompatibleDatentypen einander zuzuweisen. Zum Beispiel kann ein Integer immer dem Typ Long, ein Single immer dem Typ Double und alle Typen (außerbenutzerdefinierten Typen) dem Typ Variant zugewiesen werden.

EinerProzedur, die eine einzelne Eigenschaft oder einen Wert erwartet, wurde ein Objekt übergeben.
Übergeben Sie eine einzelne Eigenschaft, oder rufen Sie eine für das Objekt geeigneteMethode auf.

Anstelle eines erwartetenAusdrucks wurde der Name einesModuls oder einesProjekts verwendet. Zum Beispiel:
Debug.Print Modul1

Geben Sie einen Ausdruck an, der angezeigt werden kann.

Sie haben versucht, Variant-Werte mit dem Untertyp Error (10, vbError) zusammen mit der in früheren Versionen von Basic verwendeten Fehlerbehandlung anzugeben:
Error CVErr(n)

Wenn Sie einen Fehler erneut auslösen müssen, müssen Sie ihn erst in einen systeminternen (oder benutzerdefinierten) Visual Basic-Fehler umwandeln und dann diesen Fehler auslösen.

Sie können einen CVErr-Wert nicht in den Datentyp Date umwandeln, zum Beispiel:
Var1 = CDate(CVErr(9))

Verwenden Sie eine Select Case-Anweisung oder einen ähnlichen Ausdruck, um den Rückgabewert von CVErr in einen solchen Wert umzuwandeln.

ZurLaufzeit zeigt dieser Fehler in der Regel an, daß ein in einem Ausdruck verwendeter Variant-Wert einen ungültigen Untertyp hat, oder daß ein Variant-Wert, der einDatenfeld enthält, in einer Print #-Anweisung enthalten ist.
Verwenden Sie zur Ausgabe von Datenfeldern eine Schleife, die jedes Element einzeln ausgibt.

Weitere Informationen erhalten Sie, wenn Sie das fragliche Element auswählen und F1 (unter Windows) oder HILFE (beim Macintosh) drücken.

Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

VBA-Laufzeitfehler 13: Typen unverträglich beheben


Schritt-für-Schritt-Anleitung

Um den VBA-Laufzeitfehler 13 zu beheben, solltest Du folgende Schritte befolgen:

  1. Identifiziere die Fehlermeldung: Achte darauf, wo genau der Fehler auftritt. Dies geschieht oft in einer Schleife oder bei Zuweisungen.

  2. Überprüfe Datentypen: Stelle sicher, dass die Variablen die richtigen Datentypen haben. Zum Beispiel:

    Dim i As Integer
    Dim result As Variant
  3. Korrekte Zuweisungen: Achte darauf, dass Du nur kompatible Datentypen zuweist. Ein Integer kann beispielsweise nicht direkt mit einer String-Variable kombiniert werden.

  4. Verwende Fehlerbehandlung: Implementiere eine einfache Fehlerbehandlung, um den Fehler zu identifizieren und zu dokumentieren:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

Häufige Fehler und Lösungen

Die häufigsten Ursachen für den Laufzeitfehler 13 sind:

  • Falsche Datentypen: Überprüfe, ob die Zuweisung den richtigen Datentyp erwartet. Beispielsweise kann ein Integer nicht mit einem String kombiniert werden.

  • Objekte statt Werte: Du hast möglicherweise ein Objekt anstelle eines Wertes übergeben. Stelle sicher, dass Du die richtigen Parameter übergibst.

  • Verwendung von CVErr: Wenn Du CVErr verwendest, achte darauf, dass Du den Rückgabewert korrekt behandelst, um Typenkonflikte zu vermeiden.

Um laufzeitfehler 13 typen unverträglich zu beheben, kannst Du die Variablenkonvertierung verwenden:

Dim myVal As Variant
myVal = CStr(Cells(i, 1).Value)

Alternative Methoden

Wenn der Laufzeitfehler 13 fortbesteht, kannst Du folgende alternative Methoden ausprobieren:

  1. Debugging mit Debug.Print: Nutze Debug.Print, um den Wert und den Datentyp im Debugger zu überprüfen:

    Debug.Print TypeName(Cells(i, 1).Value)
  2. Fehlermeldung anpassen: Passe die Fehlermeldung an, um spezifischere Informationen zu erhalten:

    If Not IsNumeric(Cells(i, 1).Value) Then
       MsgBox "Nicht numerischer Wert in Zeile " & i
    End If

Praktische Beispiele

Hier sind einige praktische Beispiele, um den Laufzeitfehler 13 zu verstehen und zu beheben:

Beispiel 1: Falsche Zuweisung

Dim myNum As Integer
myNum = "Text" ' Fehler: Typen unverträglich

Um diesen Fehler zu vermeiden, stelle sicher, dass Du nur numerische Werte zuweist.

Beispiel 2: Schleife und Summe

For i = 1 To ActiveSheet.UsedRange.Rows.Count
    Cells(i, 2).Value = Application.WorksheetFunction.Sum(Cells(i, 1).Value)
Next i

Überprüfe hier, ob der Wert in Cells(i, 1) numerisch ist.


Tipps für Profis

  • Variablen deklarieren: Deklariere alle Variablen mit den richtigen Datentypen, um Typenkonflikte zu minimieren.

  • Option Explicit verwenden: Setze Option Explicit an den Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.

  • Verwende Typ-Konvertierungen: Nutze Typ-Konvertierungen wie CInt, CLng, CStr, um sicherzustellen, dass die Datentypen korrekt sind.

  • Vermeide globale Variablen: Verwende wenn möglich lokale Variablen, um den Code übersichtlicher zu gestalten und Fehler zu reduzieren.


FAQ: Häufige Fragen

1. Was bedeutet der Laufzeitfehler 13? Der Laufzeitfehler 13 bedeutet, dass es einen Typenkonflikt gibt, also dass ein Datentyp nicht mit dem erwarteten Datentyp übereinstimmt.

2. Wie kann ich den Fehler beheben? Überprüfe die Zuweisungen in Deinem Code, stelle sicher, dass die Datentypen kompatibel sind, und implementiere eine Fehlerbehandlung mit On Error.

3. Tritt der Fehler nur in bestimmten Excel-Versionen auf? Der Fehler kann in allen Versionen von Excel auftreten, in denen VBA verwendet wird. Es hängt von der Codierung und den verwendeten Datentypen ab.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige