Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
832to836
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
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Anstelle Debugger den Fehler m.e. Meldung abfangen

Anstelle Debugger den Fehler m.e. Meldung abfangen
02.01.2007 13:21:52
Peter
Guten Tag
In einem Makro frage ich für Spalte D aus einem Lookuptable Werte ab. Wenn nun der Suchwert nicht gefunden wird, kommt so logischerweise der Debugger.
Wie kann ich den Code ergänzen, damit bein Auftreten des Fehlers die Meldung erscheint, welche Zelle das Problem verursacht hat? Also beispielsweise, wenn der Fehler auftritt, wenn zNr auf 29 ist, sollte die Meldung erscheinen, "Wert für D29 ist im Lookuptable nicht definiert". Die Meldung sollte dann mit OK quittiert werden können.
Danke für ein Feedback.
Peter
zNr = 2
Do While zNr &lt= BW_Diff
If .Cells(zNr, 4) = "" And Len(.Cells(zNr, 5)) &lt 6 Then
.Cells(zNr, 4) = WorksheetFunction.VLookup(Val(.Cells(zNr, 5)), Range("KontoISIN"), 2, 0)
Else
End If
zNr = zNr + 1
Loop

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anstelle Debugger den Fehler m.e. Meldung abfangen
02.01.2007 13:42:15
Andi
Hi,
wenn das Makro nach der Meldung abbrechen soll, dann geht das so:

Sub t()
On Error GoTo errorhandler
zNr = 2
Do While zNr <= BW_Diff
If .Cells(zNr, 4) = "" And Len(.Cells(zNr, 5)) < 6 Then
.Cells(zNr, 4) = WorksheetFunction.VLookup(Val(.Cells(zNr, 5)), Range("KontoISIN"), 2, 0)
Else
End If
zNr = zNr + 1
Loop
Exit Sub
errorhandler:
MsgBox "Wert für D" & CStr(zNr) & "ist im Lookuptable nicht definiert"
End Sub

Wenn nach der Meldung in der nächsten Zeile weitergemacht werden soll, dann so:

Sub t()
On Error GoTo errorhandler
zNr = 2
Do While zNr <= BW_Diff
If .Cells(zNr, 4) = "" And Len(.Cells(zNr, 5)) < 6 Then
.Cells(zNr, 4) = WorksheetFunction.VLookup(Val(.Cells(zNr, 5)), Range("KontoISIN"), 2, 0)
Else
End If
zNr = zNr + 1
Loop
Exit Sub
errorhandler:
MsgBox "Wert für D" & CStr(zNr) & "ist im Lookuptable nicht definiert"
Resume Next
End Sub

Schönen Gruß,
Andi
Anzeige
AW: Anstelle Debugger den Fehler m.e. Meldung abfangen
02.01.2007 13:43:43
Peter
Hallo Andi
Herzlichen Dank für den Beitrag.
Ich werde das ausprobieren (bin gerade auf dem Sprung).
Peter
AW: Anstelle Debugger den Fehler m.e. Meldung abfangen
Daniel
Hallo
alternative zu "on Error goto" gäbs die Methode, das Vorhandensein des Wertes vorher mit einer Funktion abzufragen, die keinen Fehler erzeugt und dann entsprechend zu reagieren.
Mögllich wäre da zum Beispiel "Worksheetfunction.CountIf"
anstelle der Zeile mit Worksheetfunction.Vlookup fügst du ein:

select case worksheetfunction.countif(Range("KontoISIN"), Val(.Cells(zNr, 5)))
case 0
Msgbox "Wert nicht gefunden"
case 1
.Cells(zNr, 4) = WorksheetFunction.VLookup(Val(.Cells(zNr, 5)), Range("KontoISIN"), 2, 0)
case else
msgbox "Wert mehrfach vorhanden"
end select

zusätzlich könnte es auch sinnvoll sein, die Fehlermeldungen in einem Textstring zu sammeln, um sie erst nach durchlauf anzeigen zu lassen (dann mußt du bei längerm durchlauf nicht ständig vorm Bildschirm sitzten)
Gruß, Daniel
Anzeige
AW: Anstelle Debugger den Fehler m.e. Meldung abfangen
03.01.2007 11:09:27
Peter
Hallo Daniel
Vielen Dank für deinen Beitrag mit dieser Alternative.
Du erwähnst am Schluss, dass es auch sinnvoll sein könne, die Fehlermeldungen in einem Textstring zu sammeln, um sie erst nach durchlauf anzeigen zu lassen. Das ist wirklich so. Aber ich habe keine Ahnung, wie so etwas zu bewerkstelligen wäre.
Könntest du mir allenfalls dazu noch eine Hilfestellung geben?
Danke und freundlicher Gruss
Peter
AW: Anstelle Debugger den Fehler m.e. Meldung abfangen
03.01.2007 20:49:07
Daniel
Hallo

Sub xxx
Dim Fehlertext as string
... Start Schleife
select case worksheetfunction.countif(Range("KontoISIN"), Val(.Cells(zNr, 5)))
case 0
Fehlertext = Fehlertext & Chr(10) & "Wert " & Val(.Cells(zNr, 5)) & " aus Zeile " & zNr & " fehlt"
case 1
.Cells(zNr, 4) = WorksheetFunction.VLookup(Val(.Cells(zNr, 5)), Range("KontoISIN"), 2, 0)
case else
Fehlertext = Fehlertext & Chr(10) & "Wert " & Val(.Cells(zNr, 5)) & " aus Zeile " & zNr & " ist mehrfach in Liste vorhanden"
end select
... Schleifenende
Msgbox Fehlertext
End Sub
Gruß, Daniel

Anzeige
AW: Anstelle Debugger den Fehler m.e. Meldung abfangen
04.01.2007 08:08:11
Peter
Hallo Daniel
Vielen Dank für die Rückmeldung.
Das werde ich umsetzen.
Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige