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

Forumthread: #NV Fehler Abfragen

#NV Fehler Abfragen
11.04.2002 16:43:16
Philipp
Hallo!

Bitte um eure Hilfe, habe da ein Problem:

Ich bekommen durch eine SVerweis Funktion eine Fehlermeldung zurück (ist schon OK so). Wie kann ich diese dann über ein Makro auswerten/auslesen?

Das Problem:
Ich lass über ein Makro eine Auswertung ablaufen. Die SVerweis Funktion greift dabei auf Wechselkurse zu. Wenn kein Wechselkurs vorhanden ist liefert die Formel einen Fehler zurück (#NV). Ich möchte jetzt über das Marko den Bereich auslesen und so feststellen ob Fehler aufgetreten sind. Wenn ja, soll das Makro abgebrochen werden und eine Messagebox aufscheinen "Wechselkurs fehlt, Makro wird abgebrochen!"

Wie geht das? Hat da jemand eine Idee?
Gruß und Danke in Voraus
Philipp

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: #NV Fehler Abfragen
11.04.2002 17:02:53
Benoit
Du musst den Fehler bei der Ausführung der SVerweis (auf englisch: VLookup) in deinem Makro abfangen:

Sub Makro3()
Dim Result

...

for i=...
Result = WorksheetFunction.VLookup (...)
If (IsError(Result)) Then
MsgBox ("Fehlende Wechselkurs!")
Exit Sub
End If
Next i
End Sub

Wenn Du aber den SVerweis als Funktion in dem Blatt hast und dann eine Makro benutzen willst, um diese Blatt durchzulesen, sieht es so aus:
Sub Makro4()
Dim Zelle

For Each Zelle In Worksheets("Tabelle1").SpecialCells(xlFormulas)
If Zelle.Text = "#NV" Then
MsgBox ("Fehlende Wechselkurs!")
Exit Sub
End If
Next
End Sub

vielleicht kannst Du sogar
If Zelle.Text = "#NV" Then
durch
If IsError(Zelle.Value) Then
ersetzen.

Viel Spass beim Probieren
Benoit

Anzeige
DANKE!!!
11.04.2002 17:21:20
Philipp
Danke Benoit, funktioniert super! Sieht jetzt so aus:

Dim Zelle
For Each Zelle In Range("M5:Q" & zeile) 'zeile wird schon weiter oben definert
If Zelle.Text = "#NV" Then
MsgBox ("Fehlende Wechselkurs!")
Exit Sub
End If
Next

Anzeige
Benoit - noch eine Frage!
11.04.2002 17:25:20
Philipp
Eine Formel gehört in eine logische Zeile, kann aber mit einen _ (underscore) in mehrere physische Zeilen unterbrochen werden - kann man das auch mit überlangen Texten in messagboxes machen? Wie?
LG Philipp
Re: Benoit - noch eine Frage!
11.04.2002 18:23:23
Benoit
Nein,

kannst Du nicht. Du Kannst zwar die Zeile, wo das Befehl Msgbox steht mit dem Underscore auf einer zweite physische Zeile (aber immer gleiche logische Zeile), das wird aber keine Wirkung uaf dem Erscheinung des Textes im Messagebox.

Die Lösung lautet:
Msgbox "das ist die erste Teile des Textes," & chr(13) & _
"den ich," & chr(13) & _
"aus Schönheitsgründen oder " & chr(13) & _
"weil der Text zu lang ist," & chr(13) & _
"auf mehrere Zeilen teilen."

13 ist das ASCII-Code für CarriageReturn. Chr() wandelt diese Code im Text.
Die Underscore sind hier ebenfalls aus Schönheitsgründen. Du könntest das Gesamte auf ein einzige Zeile schreiben. Es hätte keine Wirkung.

Viel Spass beim Probieren,
Benoit

Anzeige
Re: Benoit - noch eine Frage! - nochmals DANKE!
11.04.2002 18:57:21
Philipp
Chef, danke für die Hilfe! Funktioniert genau so wie ich es brauche!
LG und einen schönen Abend
Philipp

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

NV Fehler Abfragen in Excel VBA


Schritt-für-Schritt-Anleitung

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

  2. Neues Modul erstellen: Klicke im Menü auf Einfügen und wähle Modul.

  3. Makro schreiben: Füge den folgenden Code ein, um Fehler beim SVerweis abzufangen.

    Sub FehlerAbfangen()
       Dim Result As Variant
       Dim i As Integer
    
       For i = 1 To 10 ' Beispiel für die Anzahl der Zeilen
           Result = WorksheetFunction.VLookup(Range("A" & i), Sheets("Tabelle1").Range("B1:C10"), 2, False)
           If IsError(Result) Then
               MsgBox "Fehlender Wert in Zeile " & i, vbExclamation
               Exit Sub
           End If
       Next i
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: #NV in Zellen: Wenn Du mit Excel SVerweis arbeitest, kannst Du den Fehler wie folgt abfangen:

    Dim Zelle As Range
    For Each Zelle In Worksheets("Tabelle1").SpecialCells(xlFormulas)
       If Zelle.Text = "#NV" Then
           MsgBox "Fehlende Wechselkurs!"
           Exit Sub
       End If
    Next
  • Fehler bei der Variablenzuweisung: Achte darauf, dass die Variablen korrekt deklariert sind. Verwende Variant, um sowohl Text als auch Fehler abzufangen.


Alternative Methoden

  • Excel-Wenn-Funktion: Um in einer Excel-Zelle zu prüfen, ob ein Wert #NV ist, kannst Du die Formel verwenden:

    =WENN(ISTFEHLER(SVERWEIS(A1;B1:C10;2;FALSCH)); "Wechselkurs fehlt"; SVERWEIS(A1;B1:C10;2;FALSCH))
  • Fehler ausblenden: Um den Fehler visuell auszublenden, kannst Du die Funktion WENNFEHLER verwenden:

    =WENNFEHLER(SVERWEIS(A1;B1:C10;2;FALSCH); "Kein Wert vorhanden")

Praktische Beispiele

  • Makro zur Prüfung auf #NV:

    Sub NVPruefen()
       Dim Zelle As Range
       For Each Zelle In Range("M5:Q10") ' Beispielbereich
           If IsError(Zelle.Value) Then
               MsgBox "Zelle " & Zelle.Address & " enthält einen Fehler (#NV)."
           End If
       Next
    End Sub
  • Formel für Wechselkurse:

    =WENN(A1=""; "#NV"; SVERWEIS(A1; Wechselkurse!A:B; 2; FALSCH))

Tipps für Profis

  • Verwende On Error Resume Next: Um Fehler in VBA zu ignorieren, kannst Du diese Anweisung zu Beginn Deines Makros hinzufügen. Achte jedoch darauf, dass Du Fehler nachfolgend richtig behandelst.

  • Kombiniere Funktionen: Beispielsweise kannst Du WENN und ISTFEHLER kombinieren, um die Benutzerfreundlichkeit zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich #NV Fehler in Excel ausblenden?
Du kannst die WENNFEHLER-Funktion verwenden, um Fehlerwerte durch benutzerdefinierte Texte zu ersetzen.

2. Was ist der Unterschied zwischen SVerweis und WVerweis?
SVerweis sucht Werte in vertikalen Spalten, während WVerweis für die horizontale Suche geeignet ist.

3. Wie kann ich mit VBA auf #NV Fehler prüfen?
Verwende die IsError-Funktion in Deinem Makro, um auf Fehlerwerte zu prüfen und entsprechende Aktionen durchzuführen.

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