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
02.03.2007 19:31:00
Mathias
Hallo,
habe folgendes Makro, mit welchen so eine Art "bedingte Formatierung" realisiert wird.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D2:AB372]) Is Nothing Then Exit Sub
Dim rngQuelle As Range
Dim intCounter As Integer
intCounter = 0
Set rngQuelle = Sheets("LEGENDE").Cells(1, 1)
Do While intCounter < 25
intCounter = intCounter + 1
Set rngQuelle = Sheets("LEGENDE").Cells(intCounter, 1)
With Target
Select Case .Value
Case rngQuelle.Value
.Interior.ColorIndex = rngQuelle.Interior.ColorIndex
.Font.ColorIndex = rngQuelle.Font.ColorIndex
intCounter = 25
Case Else
.Interior.ColorIndex = xlNone
.Font.ColorIndex = 1
End Select
End With
Loop
Set rngQuelle = Nothing
End Sub

Wenn ich nun mehr als eine Zelle lösche oder kopiere, erscheint ein Laufzeitfehler von VBA mit der Meldung "Typen unverträglich". Wie kann ich diese Meldung kommentarlos abfangen?
Auerdem wäre ich an Optimierungsvorschlägen (schneller, sicherer, besser) für obiges Makro interessiert, falls jemand Vorschläge hat. Vielen Dank!
Freundliche Grüße
Mathias Willmes
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich
ransi
HAllo
So recht kann ich den Code nicht nachvollziehen, aber hilft das hier ?
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D2:AB372]) Is Nothing Then Exit Sub
if target.count>1 then exit sub
ransi
AW: Laufzeitfehler 13 - Typen unverträglich
02.03.2007 19:55:00
Mathias
Hallo,
vielen Dank für den Tipp. Die Fehlermeldung ist damit verschwunden.
Freundliche Grüße
Mathias Willmes
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

Um den Laufzeitfehler 13 - Typen unverträglich in Excel VBA zu beheben, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Finde das betroffene Makro: Suche das Makro, das den Fehler verursacht (in diesem Fall das Worksheet_Change-Ereignis).

  3. Überprüfe den Code: Achte darauf, dass der Code nur mit einem einzelnen Ziel (einer Zelle) arbeitet, um den Fehler zu vermeiden. Füge die folgende Zeile hinzu, um mehrere Zellen auszuschließen:

    If Target.Count > 1 Then Exit Sub
  4. Füge diese Zeile an die richtige Stelle ein: Platziere die Zeile direkt nach der Überprüfung, ob der Target-Bereich im angegebenen Bereich liegt.

  5. Teste das Makro: Speichere deine Änderungen und teste das Makro, indem du eine Zelle im definierten Bereich änderst.


Häufige Fehler und Lösungen

  • Fehlermeldung "Typen unverträglich": Dieser Fehler tritt auf, wenn der Code versucht, mit einem ungeeigneten Datentyp zu arbeiten. Um dies zu vermeiden, stelle sicher, dass du nur mit einzelnen Zellen arbeitest, wie im vorherigen Abschnitt beschrieben.

  • Code wird nicht ausgeführt: Überprüfe, ob das Makro im richtigen Arbeitsblatt gespeichert ist und ob die Ereignisse aktiviert sind.


Alternative Methoden

Wenn du die Fehlermeldung "vba laufzeitfehler 13 typen unverträglich" weiterhin erhältst oder eine andere Lösung suchst, kannst du folgende Ansätze ausprobieren:

  • Fehlerbehandlung einfügen: Füge eine Fehlerbehandlungsroutine hinzu, um den Fehler abzufangen und zu ignorieren. Beispiel:

    On Error Resume Next
  • Verwenden von Application.EnableEvents: Setze das EnableEvents-Attribut auf False, um unerwünschte Trigger zu vermeiden:

    Application.EnableEvents = False
    ' Dein Code hier
    Application.EnableEvents = True

Praktische Beispiele

Hier ist ein optimiertes Beispiel, das den vorherigen Fehler vermeidet:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [D2:AB372]) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub

    Dim rngQuelle As Range
    Dim intCounter As Integer
    intCounter = 0
    Set rngQuelle = Sheets("LEGENDE").Cells(1, 1)

    Do While intCounter < 25
        intCounter = intCounter + 1
        Set rngQuelle = Sheets("LEGENDE").Cells(intCounter, 1)
        With Target
            Select Case .Value
                Case rngQuelle.Value
                    .Interior.ColorIndex = rngQuelle.Interior.ColorIndex
                    .Font.ColorIndex = rngQuelle.Font.ColorIndex
                    intCounter = 25
                Case Else
                    .Interior.ColorIndex = xlNone
                    .Font.ColorIndex = 1
            End Select
        End With
    Loop

    Set rngQuelle = Nothing
End Sub

Tipps für Profis

  • Verwende Option Explicit: Setze diese Anweisung am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, mögliche Typenkonflikte frühzeitig zu erkennen.

  • Debugging: Nutze die Debug.Print-Anweisung, um den Wert von Variablen während der Ausführung zu überprüfen.

  • Regelmäßige Backups: Speichere regelmäßige Backups deiner Excel-Datei, besonders wenn du mit VBA arbeitest.


FAQ: Häufige Fragen

1. Was bedeutet "Typen unverträglich" in VBA?
"Typen unverträglich" ist eine Fehlermeldung, die erscheint, wenn ein Datentyp im Code nicht mit einem anderen kompatibel ist. Dies geschieht oft in Bedingungen, wenn beispielsweise ein Textwert mit einer Zahl verglichen wird.

2. Wie kann ich Laufzeitfehler in VBA generell vermeiden?
Um Laufzeitfehler zu vermeiden, achte darauf, dass alle Variablen korrekt deklariert und die Datentypen kompatibel sind. Verwende außerdem Fehlerbehandlungsroutinen, um mit unerwarteten Fehlern umzugehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige