Umgang mit Fehler 13 "Typen unverträglich" in Excel VBA
Schritt-für-Schritt-Anleitung
-
VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Neues Modul erstellen: Klicke mit der rechten Maustaste auf dein Projekt im Projekt-Explorer und wähle Einfügen > Modul.
-
Code eingeben: Kopiere den folgenden Code in das neue Modul:
Dim DSNummern As Range
Set DSNummern = Range("DSNummer")
Dim Kleinster As Integer
Dim I As Integer, j As Integer
j = 0
Kleinster = Application.WorksheetFunction.Min(DSNummern)
For Each Zelle In DSNummern
If Zelle.Value > Kleinster Then
If Zelle.Value > Zelle.Offset(-1, 0).Value + 1 Then
For I = Kleinster + 1 To Zelle.Value - 1
ActiveCell.Offset(j, 0).Value = I
j = j + 1
Next I
End If
End If
Kleinster = Zelle.Value
Next Zelle
-
Ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.
Häufige Fehler und Lösungen
-
Fehler 13 "Typen unverträglich": Dieser Fehler tritt häufig auf, wenn in einer Zelle ein unerwarteter Datentyp vorhanden ist. Prüfe den Offset-Bereich, um sicherzustellen, dass er immer innerhalb des DSNummer-Ranges bleibt. Eine einfache Überprüfung könnte so aussehen:
If Not IsError(Zelle.Offset(I * -1, 0).Value) Then
' Dein Code
End If
-
Minimale Zahl abfragen: Um die kleinste Zahl aus DSNummern abzufragen, kannst du den WorksheetFunction Min verwenden oder eine Schleife, die die Werte manuell vergleicht.
Alternative Methoden
Wenn du die Liste der Zahlen nicht sortieren möchtest, kannst du die Eingabewerte in ein Array einlesen, um die Logik zu verlagern. Hier ist, wie das geht:
Dim Werte() As Variant
Werte = Application.Transpose(Range("DSNummer").Value)
' Sortiere Werte hier, z.B. mit Bubble Sort
Du kannst dann das Array verwenden, um die fehlenden Zahlen zu ermitteln.
Praktische Beispiele
Hier ist ein einfaches Beispiel, um fehlende Zahlen aus einer sortierten Liste zu extrahieren:
Dim DSNummern As Range
Set DSNummern = Range("DSNummer")
Dim i As Integer
Dim letzteZahl As Integer
For i = 1 To DSNummern.Count - 1
letzteZahl = DSNummern.Cells(i).Value
' Beispiel für fehlende Zahlen
If DSNummern.Cells(i + 1).Value > letzteZahl + 1 Then
Debug.Print letzteZahl + 1 ' Ausgabe fehlender Zahlen
End If
Next i
Tipps für Profis
- Nutze
Option Explicit ganz oben im Modul, um sicherzustellen, dass du alle Variablen deklarierst. Das hilft, Typos und Typkonflikte zu vermeiden.
- Verwende
Debug.Print, um den Inhalt von Variablen während der Ausführung zu überprüfen. So kannst du leichter Fehler finden.
- Informiere dich über die verschiedenen Datentypen in VBA, um sicherzustellen, dass du die richtigen Typen verwendest, insbesondere bei mathematischen Operationen.
FAQ: Häufige Fragen
1. Was bedeutet der Fehler 13 "Typen unverträglich"?
Der Fehler tritt auf, wenn ein Datentyp nicht mit dem erwarteten Datentyp übereinstimmt, z.B. wenn eine Zahl erwartet wird, aber ein Text übergeben wird.
2. Wie kann ich meine Liste in VBA sortieren?
Du kannst den Sort-Befehl verwenden oder die Werte in ein Array einlesen und dann einen Sortieralgorithmus wie Bubble Sort implementieren.
3. Gibt es eine einfachere Möglichkeit, die kleinste Zahl zu finden?
Ja, anstelle der WorksheetFunction.Min kannst du eine Schleife verwenden, um die kleinste Zahl manuell zu ermitteln, wenn du mehr Kontrolle benötigst.