#NV Fehler Abfragen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 2000
nach unten

Betrifft: #NV Fehler Abfragen
von: Philipp
Geschrieben am: 11.04.2002 - 16:43:16

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

nach oben   nach unten

Re: #NV Fehler Abfragen
von: Benoit
Geschrieben am: 11.04.2002 - 17:02:53

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

nach oben   nach unten

DANKE!!!
von: Philipp
Geschrieben am: 11.04.2002 - 17:21:20

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

nach oben   nach unten

Benoit - noch eine Frage!
von: Philipp
Geschrieben am: 11.04.2002 - 17:25:20

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

nach oben   nach unten

Re: Benoit - noch eine Frage!
von: Benoit
Geschrieben am: 11.04.2002 - 18:23:23

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

nach oben   nach unten

Re: Benoit - noch eine Frage! - nochmals DANKE!
von: Philipp
Geschrieben am: 11.04.2002 - 18:57:21

Chef, danke für die Hilfe! Funktioniert genau so wie ich es brauche!
LG und einen schönen Abend
Philipp

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "#NV Fehler Abfragen"