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

Error in Schleife

Error in Schleife
04.09.2006 17:50:40
Georg
Hallo,
ich möchte bei einem Fehler (Wert nicht gefunden) in einer Schleife einfach zum nächsten i übergehen, nachdem eine Fehlermeldung ausgegeben wurde, dass der Wert nicht vorhanden ist. Aber irgendwie hängt es wohl einem dummen Detail, jedenfalls komme ich nur über den ersten "Fehler" hinweg, beim nächsten bricht er ab:
Der Code:

Sub Makro3()
Application.ScreenUpdating = False
Worksheets("runde_1").Activate
Dim Wert0 As String
Dim i As Integer
For i = 1 To 10
Retry:
Application.ScreenUpdating = False
Worksheets("teilnehmer").Activate
Cells(2 + i, 2).Select
Wert0 = ActiveCell.Value
Worksheets("runde_1").Activate
On Error GoTo fehler
Wert1 = Range("B4:D12").Find(Wert0).Address
MsgBox "Der Spieler '" + LTrim(Wert0) + "' findet sich in " + LTri(Wert1)
Next i
fehler: MsgBox "Den Spieler '" + LTrim(Wert0) + "'gibt´s nicht"
i = i + 2
GoTo Retry
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Error in Schleife
04.09.2006 18:36:10
Koenig
Hallo Georg,
ungetestet, aber wahrscheinlich musst Du den Fehler zurücksetzten, da die Fehlerroutine sonst noch aktiv ist.
Vor dem GoTo Retry würde ich den fehler zurücksetzten.
Ausserdem fehlt das Exit Sub, wenn die Routine ohne Fehler durchläuft.
Gruss
AW: Error in Schleife
04.09.2006 18:36:45
ChrisL
Hallo Georg
Wenn etwas mit hoher Wahrscheinlichkeit eintrifft, ist "Fehler" die falsche Bezeichnung. Fehlerbehandlungen würde ich mir für "richtige Fehler" aufheben.
Da kein Select verwendet (wenn möglich verzichten), braucht es ScreenUpdating nicht mehr. Mehr zu Select/Activate: https://www.herber.de/xlfaq/xlbasics/main_sel.htm
Vielleicht noch besser wäre bereits bei Eingabe von Namen zu prüfen (Gültigkeitsprüfung).
Gruss
Chris

Sub test()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile As Byte
Dim rng As Range
Set WS1 = Worksheets("teilnehmer")
Set WS2 = Worksheets("runde_1")
For iZeile = 3 To 12
If WS1.Cells(iZeile, 2) <> "" Then
Set rng = WS2.Range("B4:D12").Find(WS1.Cells(iZeile, 2))
If rng Is Nothing Then
MsgBox "nix Spieler: " & WS1.Cells(iZeile, 2)
Else
MsgBox "Spieler gefunden in: " & rng.Address(0, 0)
End If
End If
Next iZeile
End Sub

Anzeige
AW: Error in Schleife
04.09.2006 18:40:10
IngGi
Hallo Georg,
du musst die Fehlerbearbeitung mit einem Resume-Befehl beenden. Erst dann wird bei einem weiteren Fehler wieder in die Fehlerbearbeitung verzweigt. Tritt innerhalb einer Fehlerbearbeitung ein weiterer Fehler auf, erzeugt das zwangsläufig einen Laufzeitfehler, es wird nicht mehr in eine Fehlerbearbeitung verzweigt. Wenn du einen GoTo-Befehl verwendest, um aus der Fehlerbereinigung wieder zurück in's normale Programm zu kommen, dann wird die Fehlerbearbeitung eben nicht beendet und der nächste Fehler erzeugt einen Laufzeitfehler. So sollte es gehen:

Sub Makro3()
Application.ScreenUpdating = False
Worksheets("runde_1").Activate
Dim Wert0 As String
Dim i As Integer
For i = 1 To 10
Application.ScreenUpdating = False
Worksheets("teilnehmer").Activate
Cells(2 + i, 2).Select
Wert0 = ActiveCell.Value
Worksheets("runde_1").Activate
On Error GoTo fehler
Wert1 = Range("B4:D12").Find(Wert0).Address
If Wert1 <> "FEHLER" Then _
MsgBox "Der Spieler '" + LTrim(Wert0) + "' findet sich in " + LTri(Wert1)
Next i
fehler: MsgBox "Den Spieler '" + LTrim(Wert0) + "'gibt´s nicht"
i = i + 2
Wert1 = "FEHLER"
Resume Next
End Sub
Gruß Ingolf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige