>> Ich habe schon öfter gehört, dass man Sprungmarken wie "On Error Goto .." wirklich vermeiden soll
Vermeiden heißt nicht zwingend, dass man sie nicht nutzen darf.
Es kommt auf das "Wie" an - "Wie setzt man Sprungmarken richtig ein".
Option Explicit
Public Sub Beispiel01()
Randomize Timer 'Zufallszahlengenerator init.
Dim t As Double
Dim erg As Double
t = Math.Round(Rnd()) 'liefert 0 oder 1
On Error Resume Next
'Berechnung ausführen
'(bei t = 0 kommt es hier zum Laufzeitfehler 11 'Division durch Null')
erg = 815 / t
If CBool(Err.Number) Then
Call MsgBox(Err.Description, vbCritical, "Laufzeitfehler " & Err.Number)
Exit Sub
End If
'hier folgt weiterer "Krimskrams" (hier nur veranschaulicht)
erg = erg * 1.25
Call MsgBox("Berechnung erfolgreich ausgeführt.", vbInformation, "Fertig")
End Sub
Public Sub Beispiel02()
Randomize Timer 'Zufallszahlengenerator init.
On Error GoTo ErrHandler
Dim t As Double
Dim erg As Double
t = Math.Round(Rnd()) 'liefert 0 oder 1
'Berechnung ausführen
'(bei t = 0 kommt es hier zum Laufzeitfehler 11 'Division durch Null')
erg = 815 / t
'hier folgt weiterer "Krimskrams" (hier nur veranschaulicht)
erg = erg * 1.25
Call MsgBox("Berechnung erfolgreich ausgeführt.", vbInformation, "Fertig")
Exit Sub
ErrHandler:
Call MsgBox("ErrHandler: " & vbNewLine & Err.Description, vbCritical, "Laufzeitfehler " & Err.Number)
End Sub
Die obigen Beispiele zeigen den korrekten Umgang mit "On Error...".
Das wovon du gelesen hast bezieht sich ehern auf sogenannten "Spagetticode.
Option Explicit
'Code nur zur Veranschaulichung
'(dieser Programmierstil mit Goto ist 'verboten')
Sub Spagetticode()
Randomize Timer 'Zufallszahlengenerator init.
Dim erg As Double
Step01:
erg = erg + (100 - 1) * Rnd() + 1 'erg := erg + "Zufallszahl im Bereich: 1 bis 100"
DoEvents
Step03:
If erg < 65.75 Then GoTo Step01
erg = erg / 2
Step08:
If erg > 55.25 Then GoTo Step03
Call MsgBox("erg = " & Round(erg, 4), Title:="Fertig")
End Sub
Hier erkennt man nur schwer den Ablauf (und auch den Sinn) des Algorithmus. Unter anderem gilt es deshalb heute als verboten. Diese Sprunganweisungen rühren noch aus den Anfängen der Programmierung her (in Maschinen(nahe)sprachen auch heute noch aktuell). In inzwischen veralteten Sprachen war das die übliche Möglichkeit Code so zu organisieren, dass es halbwegs übersichtlich bleibt (Codeblöcke). Diese Möglichkeit damit zu arbeiten hat sich bis heute (Gründe seien mal dahingestellt) weiter in Programmiersprachen gehalten, jedoch bieten moderne Sprachen inzwischen weitaus bessere Lösungsmöglichkeiten an.
Grüße
|