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

Forumthread: Fehler bei Typumwandlung

Fehler bei Typumwandlung
Heiko
Hallo alle,
ich hab hier ein programm, das daten aus einer messmaschine in eine datenbank überträgt. Das programm wurde auf Excel 2003 entwickelt, und läuft auf dieser version ohne probleme. Nun muss ich es auf 2007 überarbeiten, und damit fangen die probleme an.
Ich prüfe u.a. die gültigkeit (sprich: ist tatsächlich eine zahl eingegeben worden) einer _ intern vergebenen bauteilnummer:

Private Function lfdnr_gueltig(lfdnr As Variant) As Boolean
lfdnr_gueltig = True
On Error GoTo errorhandler
Range("I2")= CInt(lfdnr)
errorhandler:
If Err.Number  0 Then lfdnr_gueltig = False
End Function

Unter 2003 zig-mal gelaufen, bekomme ich bei CInt(lfdnr) unter 2007 den laufzeitfehler 9 "Index außerhalb des gültigen Bereiches".
Irgendjemand 'ne idee, wie's wieder funzt?
Heiko
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Fehler bei Typumwandlung
02.09.2010 11:57:38
JogyB
Hallo Heiko,
vermutlich tritt bereits in der aufrufenden Prozedur ein Fehler auf, dessen Fehlerbehandlung noch nicht beendet ist (mit irgendeinem Resume- oder Exit-Befehl bzw. dem End Sub/Function).
Mal abgesehen davon brauchst Du in der Funktion gar keine Fehlerbehandlung, Du kannst ja mit IsNumeric(lfdnr) prüfen, ob es sich um eine Zahl handelt. Ist das des Fall, funktioniert das CInt auf jeden Fall.
Gruß, Jogy
Anzeige
AW: Fehler bei Typumwandlung
02.09.2010 12:18:16
Gerd
Hallo Heiko,
hast Du ein konkretes Beispiel für den "Zulauf", bei dem deine Funktion nicht das gewünschte Ergebnis bringt?
Gruß Gerd
AW: Fehler bei Typumwandlung
02.09.2010 16:27:30
Heiko
Hallo,
Problem gelöst: mit IsNumeric geht's.
Danke
Heiko
;
Anzeige
Anzeige

Infobox / Tutorial

Typumwandlungsfehler in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Funktion erstellen: Beginne mit einer Funktion, die die Eingabe überprüft. Hier ein Beispiel:

    Private Function lfdnr_gueltig(lfdnr As Variant) As Boolean
        lfdnr_gueltig = True
        On Error GoTo errorhandler
        Range("I2") = CInt(lfdnr)
        Exit Function
    errorhandler:
        lfdnr_gueltig = False
    End Function
  2. Eingabe überprüfen: Verwende IsNumeric, um zu prüfen, ob die Eingabe eine Zahl ist. Ändere die Funktion wie folgt:

    Private Function lfdnr_gueltig(lfdnr As Variant) As Boolean
        lfdnr_gueltig = IsNumeric(lfdnr)
        If lfdnr_gueltig Then
            Range("I2") = CInt(lfdnr)
        End If
    End Function
  3. Testen: Teste die Funktion in deiner Excel-Anwendung, um sicherzustellen, dass sie korrekt funktioniert.


Häufige Fehler und Lösungen

  • Laufzeitfehler 9: Dieser Fehler tritt oft auf, wenn auf einen ungültigen Bereich zugegriffen wird. Stelle sicher, dass der Bereich, auf den du zugreifst (z.B. Range("I2")), existiert und korrekt benannt ist.

  • Fehler bei Typumwandlung: Wenn CInt(lfdnr) einen Fehler auslöst, überprüfe, ob lfdnr wirklich eine Zahl ist. Benutze IsNumeric, um dies zu überprüfen, bevor du die Umwandlung durchführst.


Alternative Methoden

Wenn du Probleme mit CInt hast, kannst du auch andere Funktionen zur Typumwandlung verwenden:

  • Val: Diese Funktion wandelt einen Text in eine Zahl um, ohne einen Fehler auszulösen, falls der Text nicht konvertierbar ist. Beispiel:

    Dim zahl As Double
    zahl = Val(lfdnr)
  • CLng: Wenn du eine größere Zahl benötigst, kannst du CLng statt CInt verwenden, um sicherzustellen, dass größere Werte korrekt umgewandelt werden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das die Verwendung von IsNumeric zeigt:

Sub BeispielTypumwandlung()
    Dim inputValue As Variant
    inputValue = InputBox("Gib eine Zahl ein:")

    If IsNumeric(inputValue) Then
        MsgBox "Die Zahl ist: " & CInt(inputValue)
    Else
        MsgBox "Bitte gib eine gültige Zahl ein."
    End If
End Sub

Dieses Skript fragt den Benutzer nach einer Zahl und überprüft die Eingabe, bevor es den Wert anzeigt.


Tipps für Profis

  • Vermeide On Error GoTo: Nutze stattdessen IsNumeric, um Fehler bei der Typumwandlung von vornherein zu vermeiden. Dies sorgt für klareren und wartbareren Code.

  • Debugging: Verwende Debugging-Tools in Excel VBA, um den Code Schritt für Schritt zu überprüfen und Fehlerquellen schneller zu identifizieren.

  • Versionskompatibilität: Achte darauf, dass dein Code mit der Excel-Version kompatibel ist, die du verwendest. Manchmal können Funktionen in neueren Versionen anders reagieren.


FAQ: Häufige Fragen

1. Was ist der Fehler "Index außerhalb des gültigen Bereiches"? Dieser Fehler tritt auf, wenn du versuchst, auf einen nicht existierenden Bereich in deiner Excel-Tabelle zuzugreifen. Überprüfe die Referenz zu deinem Range.

2. Kann ich CInt in jeder Excel-Version verwenden? CInt ist in allen gängigen Excel-Versionen verfügbar. Achte jedoch darauf, dass der eingegebene Wert tatsächlich eine Zahl ist, um Typumwandlungsfehler zu vermeiden.

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