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

Istfehler in VBA?

Forumthread: Istfehler in VBA?

Istfehler in VBA?
ing.grohn
Hallo Forum,
warum funktioniert:

=WENN(ISTFEHLER(B4*1);"Fehler";B4*1)

(in den Zellen B3 - B11 stehen: 1,2,3,"nichts",a,b,c,4,5)
und :

Sub TestIstfehler()
Dim I As Integer
For I = 3 To 11
If IsError(Cells(I, 2).Value) Then
Debug.Print I & " Fehler"
Else
Debug.Print Cells(I, 2).Value * 1
End If
Next I
End Sub

nicht?
Ich freue mich auf eine Antwort
Mit freundlichen Grüßen
Albrecht
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Istfehler in VBA?
04.10.2010 09:18:37
JogyB
Hallo Albrecht,
If IsError(Evaluate(Cells(I, 2).Value & "*1")) Then
Aber wie schon in der Formel ISTZAHL sinnvoller wäre (sollte man bei "Excel gut" eigentlich kennen), kann man die Prüfung in VBA auch mit IsNumeric machen.
Gruß, Jogy
AW: Istfehler in VBA?
04.10.2010 09:53:39
ing.grohn
Hallo Jogi,
"Excel gut" kommt daher, dass das die erste Möglichkeit ist um zu sagen, ein wenig VBA ist schon da.
IstZahl kenn ich (und benutze auch Isnumeric) und ist ja auch "sauberer". In vielen Beiträgen wird aber immer wieder der "Trick" mit *1 benutzt!! (ist nicht "sauber, aber funktioniert)
Mich hat gewundert (na,ja) warum die Excelformel geht und analog VBA nicht, im aufgezeichneten Makro war nicht von Evaluate zu lesen
Vielen Dank für die Antwort
Mit freundlichen Grüßen und einen sonnigen Tag wünscht
Albrecht
Anzeige
AW: Istfehler in VBA?
04.10.2010 10:04:17
JogyB
Hallo Albrecht,
bei der Aufzeichnung trägt es ja die Formel in die Zelle ein, da brauchst Du kein Evaluate. Das ist dazu da, um eine Formel in VBA ausführen zu lassen.
Gruß, Jogy
AW: Istfehler in VBA?
04.10.2010 10:15:40
ing.grohn
Hallo Jogi,
einen schönen Tag
Albrecht
;
Anzeige

Infobox / Tutorial

Istfehler in VBA: Lösungen und Tipps


Schritt-für-Schritt-Anleitung

  1. Verwendung der ISTFEHLER-Funktion in Excel:

    • Wenn du in Excel die Funktion =WENN(ISTFEHLER(B4*1);"Fehler";B4*1) verwendest, überprüfst du, ob das Ergebnis der Berechnung in Zelle B4 einen Fehler ergibt. Wenn ja, wird "Fehler" angezeigt, ansonsten das Ergebnis.
  2. Umsetzung in VBA:

    • Um die gleiche Logik in VBA zu implementieren, kannst du die IsError-Funktion verwenden:
      Sub TestIstfehler()
      Dim I As Integer
      For I = 3 To 11
         If IsError(Cells(I, 2).Value) Then
             Debug.Print I & " Fehler"
         Else
             Debug.Print Cells(I, 2).Value * 1
         End If
      Next I
      End Sub
  3. Alternativer Ansatz mit IsNumeric:

    • Anstatt IsError kannst du auch IsNumeric verwenden, um zu prüfen, ob der Wert in der Zelle eine Zahl ist:
      If Not IsNumeric(Cells(I, 2).Value) Then
      Debug.Print I & " Nicht numerisch"
      End If

Häufige Fehler und Lösungen

  • Problem: IsError gibt nicht das erwartete Ergebnis zurück.

    • Lösung: Stelle sicher, dass du die richtige Zellreferenz verwendest. Überprüfe auch, ob die Zellen, die du prüfst, tatsächlich Fehlerwerte enthalten.
  • Problem: Verwendung von Evaluate ist nicht notwendig.

    • Lösung: Wenn du eine Formel bereits in eine Zelle eingetragen hast, brauchst du Evaluate nicht. Verwende direkt die Zellreferenz.

Alternative Methoden

  • Verwendung von ISTZAHL:

    • Du kannst die Funktion ISTZAHL in Kombination mit WENN verwenden, um zu prüfen, ob ein Wert numerisch ist:
      =WENN(ISTZAHL(B4);B4*1;"Fehler")
  • Einfache Fehlerbehandlung in VBA:

    • Du kannst auch die Fehlerbehandlung in VBA verwenden. Beispiel:
      On Error Resume Next
      Cells(I, 2).Value * 1
      If Err.Number <> 0 Then
      Debug.Print I & " Fehler"
      Err.Clear
      End If
      On Error GoTo 0

Praktische Beispiele

  • Beispiel 1: Überprüfen von Zellen auf Fehler

    Sub CheckCells()
      Dim I As Integer
      For I = 3 To 11
          If IsError(Cells(I, 2).Value) Then
              Debug.Print "Zeile " & I & " enthält einen Fehler."
          End If
      Next I
    End Sub
  • Beispiel 2: Anwendung von IsNumeric

    Sub CheckNumeric()
      Dim I As Integer
      For I = 3 To 11
          If Not IsNumeric(Cells(I, 2).Value) Then
              Debug.Print "Zeile " & I & " ist nicht numerisch."
          End If
      Next I
    End Sub

Tipps für Profis

  • Verwende IsError in Kombination mit Evaluate, wenn du dynamische Formeln erzeugen möchtest.
  • Setze On Error Resume Next mit Bedacht ein, um unerwartete Fehler zu vermeiden und die Lesbarkeit des Codes zu erhöhen.
  • Halte deine VBA-Prozeduren so einfach wie möglich, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen ISTFEHLER und ISERROR in Excel? ISTFEHLER ist eine Excel-Funktion, die prüft, ob ein Ausdruck einen Fehler zurückgibt, während ISERROR in VBA verwendet wird, um Fehler zu prüfen.

2. Warum funktioniert die Formel in Excel, aber nicht in VBA? In Excel wird die Formel dynamisch ausgewertet, während in VBA andere Prüfmethoden angewendet werden sollten, wie IsError oder IsNumeric.

3. Wie kann ich einen Fehler in einer Berechnung unterdrücken? Du kannst die Fehlerbehandlung in VBA verwenden, z.B. On Error Resume Next, um den Code fortzusetzen, ohne einen Fehler zu zeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige