Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
112to116
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
112to116
112to116
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

#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

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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige