Wenn ich in VBA, meine derzeitigen Verfahren arbeiten würden wie folgt gehen:Kann ich in VBScript einen Fehler auslösen, um Goto zu simulieren?
Do While MyFile.AtEndOfStream <> True
arrRecord = Split(MyFile.ReadLine, ",") ' Make an array of the values in this line
'There are certain records I don't want to process:
If arrRecord(1) <> "USA" then goto skip
If arrRecord(0) <= "12/31/2001" then goto skip
' Otherwise, run the rest of the code on this record
skip:
Loop
Aber ich arbeite in VBScript, die nicht diese Art von Goto Funktion haben.
Ich denke daran, das gleiche zu tun, indem ich delibaratly einen Fehler aufzeige. Zum Beispiel:
Do While MyFile.AtEndOfStream <> True
arrRecord = Split(MyFile.ReadLine, ",") ' Make an array of the values in this line
On Error Goto skip
'There are certain records I don't want to process:
If arrRecord(1) <> "USA" then Call NoSuchFunction
If arrRecord(0) <= "12/31/2001" then Call NoSuchFunction
' Otherwise, run the rest of the code on this record
skip:
Loop
Gibt es ein potenzielles Problem mit diesem? Soll ich stattdessen Err.Raise benutzen?
Diese Seite ist nützlich, aber ich bin mir nicht sicher, ob das in meinem Fall zutrifft. Ich möchte nicht "Exit Do" insgesamt verlassen; Ich möchte nur zur nächsten Iteration der Do-Schleife springen. Gibt es eine Möglichkeit, das zu tun? Sonst würde ich mit mehreren verschachtelten IF ... Dann Schleifen stecken bleiben. –
Der Hacky-Weg ist ein 'Do' ...' Loop While False' mit einem 'Exit Do' in der Mitte. Aber du versuchst, einem Goto nachzueifern, was bedeutet, dass du sowieso nicht den elegantesten Code willst. Es gibt normalerweise eine Möglichkeit, Dinge so umzustrukturieren, dass der Kontrollfluss klarer ist. –