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

Forumthread: Formelfehler in vba erkennen

Formelfehler in vba erkennen
22.06.2015 15:21:08
Christian
Hallo zusammen,
ich bin neu hier, aber eine Suche hat mich leider auch nicht weiter gebracht. Ich verändere über vba eine Tabelle und füge eine Formel ein. Bei einem Fehler soll mir eine Msgbox einen "Fehlertext" zurückgeben. Bis zur zum FillDown funktioniert das auch alles soweit. Bloß meine Fehlerabfrage tut nicht.
Ich hatte die Abfrage auf ein Feld bezogen auch schon richtig (kann ich aber nicht mehr rekonstruieren :-( ), aber dann scheiterte es an meiner Schleife. Es reicht mir einmal eine Messagebox (eventuell mit Feld, in dem der Fehler aufgetreten ist) und nicht für jeden Fehler eine Messagebox.
Könnte mir bitte jemand helfen?
Viele Grüße,
Christian

Sub BearbeitungSubaru()
Dim quellBlatt As Worksheet
Dim zielBlatt As Worksheet
Dim sverweise As Worksheet
Dim letzteZeile As Long
Dim ltzSverSubZul As Long
Dim formel As String
Dim formelbereich As Range
Dim fehler As Boolean
Set quellBlatt = Worksheets("Subaru Import")
Set zielBlatt = Worksheets("Subaru Export")
Set sverweise = Worksheets("Sverweis-Tabellen")
letzteZeile = quellBlatt.Range("A100000").End(xlUp).Row
ltzSverSubZul = sverweise.Range("A100000").End(xlUp).Row
'Kopie der relevanten Spalten
quellBlatt.Range("C1:D" & letzteZeile).Copy
zielBlatt.Cells(1, 1).PasteSpecial xlPasteValues
quellBlatt.Range("F1:F" & letzteZeile).Copy
zielBlatt.Cells(1, 3).PasteSpecial xlPasteValues
quellBlatt.Range("G1:G" & letzteZeile).Copy
zielBlatt.Cells(1, 5).PasteSpecial xlPasteValues
'Überschrift einfügen
zielBlatt.Range("D1").Value = "Händler"
'Sverweis einfügen und kopieren
Set formelbereich = zielBlatt.Range("D2:D" & letzteZeile)
formel = "=VLOOKUP(RC[-3],'Sverweis-Tabellen'!R4C1:R" & ltzSverSubZul & "C2,2,FALSE)"
formelbereich.Cells(1, 1).FormulaR1C1 = formel
formelbereich.Columns(1).FillDown
'auf Fehler prüfen
If Application.WorksheetFunction.IsError(zielbereich.Range("D2").Value) = False Then
MsgBox "Kein Fehler gefunden"
Else
MsgBox "Fehlertext"
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: zielbereich ist nicht definiert
22.06.2015 15:46:35
JoWE
Hallo Christian,
in der folgenden Zeile findet sich der Bereich "zielbereich":
If Application.WorksheetFunction.IsError(zielbereich.Range("D2").Value) = False Then
der ist aber nirgendwo definiert.
Gruß
Jochen

AW: Formelfehler in vba erkennen
22.06.2015 15:47:49
Senna
Hallo Christian,
mach es mit einer Schleife:
(Code ersetzen ab "'auf Fehler prüfen")

'auf Fehler prüfen
for i = 2 to letzteZeile
if Application.WorksheetFunction.IsError(cells(i,4).Value) = True Then
MsgBox "Fehler in Reihe " & i & " gefunden."
goto Beenden
end if
next i
MsgBox "Kein Fehler gefunden."
Beenden:
end sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Formelfehler in VBA erkennen und beheben


Schritt-für-Schritt-Anleitung

Um Formelfehler in VBA zu erkennen, kannst Du die folgende Schritt-für-Schritt-Anleitung verwenden. Diese Anleitung basiert auf einem Forumthread, in dem ein Benutzer Probleme mit der Fehlerabfrage hatte.

  1. Öffne Deine Excel-Datei und öffne den VBA-Editor (ALT + F11).

  2. Füge ein neues Modul hinzu und kopiere den folgenden Code:

    Sub BearbeitungSubaru()
       Dim quellBlatt As Worksheet
       Dim zielBlatt As Worksheet
       Dim sverweise As Worksheet
       Dim letzteZeile As Long
       Dim ltzSverSubZul As Long
       Dim formel As String
       Dim formelbereich As Range
       Dim fehler As Boolean
    
       Set quellBlatt = Worksheets("Subaru Import")
       Set zielBlatt = Worksheets("Subaru Export")
       Set sverweise = Worksheets("Sverweis-Tabellen")
       letzteZeile = quellBlatt.Range("A100000").End(xlUp).Row
       ltzSverSubZul = sverweise.Range("A100000").End(xlUp).Row
    
       ' Kopie der relevanten Spalten
       quellBlatt.Range("C1:D" & letzteZeile).Copy
       zielBlatt.Cells(1, 1).PasteSpecial xlPasteValues
    
       ' Überschrift einfügen
       zielBlatt.Range("D1").Value = "Händler"
    
       ' Sverweis einfügen und kopieren
       Set formelbereich = zielBlatt.Range("D2:D" & letzteZeile)
       formel = "=VLOOKUP(RC[-3],'Sverweis-Tabellen'!R4C1:R" & ltzSverSubZul & "C2,2,FALSE)"
       formelbereich.Cells(1, 1).FormulaR1C1 = formel
       formelbereich.Columns(1).FillDown
    
       ' Auf Fehler prüfen
       For i = 2 To letzteZeile
           If Application.WorksheetFunction.IsError(cells(i, 4).Value) Then
               MsgBox "Fehler in Reihe " & i & " gefunden."
               Exit Sub
           End If
       Next i
       MsgBox "Kein Fehler gefunden."
    End Sub
  3. Führe das Makro aus und überprüfe die Ergebnisse.


Häufige Fehler und Lösungen

  1. Unbekannter Bereich: Wenn Du einen Fehler wie "zielbereich ist nicht definiert" erhältst, stelle sicher, dass Du die Variable korrekt definiert hast. In dem ursprünglichen Code war die Variable zielbereich nicht definiert. Verwende stattdessen cells(i, 4).

  2. Formel nicht korrekt: Achte darauf, dass die Formel im richtigen Format vorliegt. Für den VLOOKUP-Befehl musst Du sicherstellen, dass die Zellreferenzen korrekt sind.


Alternative Methoden

Eine alternative Methode zur Fehlerprüfung besteht darin, mit On Error Resume Next zu arbeiten. Dabei wird der Fehler ignoriert und das Programm fährt fort. Dies ist jedoch nur für spezifische Anwendungen empfohlen, da es möglicherweise andere Fehler verdecken kann.

On Error Resume Next
' Deine Formel hier
If Err.Number <> 0 Then
    MsgBox "Ein Fehler ist aufgetreten."
End If
On Error GoTo 0

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du Formelfehler mit einer Schleife und MsgBox erkennen kannst:

For i = 2 To letzteZeile
    If Application.WorksheetFunction.IsError(cells(i, 4).Value) Then
        MsgBox "Fehler in Reihe " & i & " gefunden."
        Exit Sub
    End If
Next i

Diese Methode gibt Dir die Möglichkeit, den genauen Ort des Fehlers (Reihe) anzuzeigen, was hilfreich ist, um die Problemquelle zu identifizieren.


Tipps für Profis

  • Verwende Fehlerbehandlung in VBA, um unerwartete Fehler zu vermeiden.
  • Nutze die Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Halte Deinen Code stets kommentiert und strukturiert, um die Lesbarkeit und Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Was ist ein Formelfehler in VBA?
Ein Formelfehler tritt auf, wenn eine Formel nicht korrekt ausgewertet werden kann, z.B. durch ungültige Zellreferenzen oder Daten.

2. Wie kann ich mehrere Fehler in einer Tabelle erkennen?
Du kannst eine Schleife verwenden, um alle Zellen in einem bestimmten Bereich zu überprüfen und bei jedem gefundenen Fehler eine entsprechende Nachricht auszugeben.

3. Was bedeutet "R4C1" in einer Formel?
"R4C1" ist eine R1C1-Referenz, die auf die Zelle in der 4. Reihe und 1. Spalte verweist. In diesem Fall bezieht sich dies auf die erste Zelle im Bereich, der für den VLOOKUP-Befehl verwendet wird.

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