Anzeige
Archiv - Navigation
1372to1376
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
Inhaltsverzeichnis

An Nepumuk - Stopp Befehl als Alternative

An Nepumuk - Stopp Befehl als Alternative
30.07.2014 13:40:34
Adis
ein persönliches Hallo an Nepumuk
ıch habe im Internet von MS nachgeschasut und muss zugeben, es hat mich berührt.
Der End Befehl hat wirklich böse Tücken. Er stoppt alle Makros, alle Programme.
Ich gebe offen zu das ich es nicht gewusst habe, dann hätte ich ihn nicht verwendet. Ich entschuldige mich in aller Form, wenn das zu einem Programmabsturz geführt hat.
Meine Frage ist: Stop Befehl als Alternative (Exit Sub ist mir bekannt)
Sie schrieben das der Stop Befehl ein Programm stoppt. Gibt es dabei Nebenwirkungen?
Bleibt das Programm gestoppt? Oder wird es durch ein Ereignis wie zB Taste drücken erneut gestartet? Es wäre ja ein sinnvolle Alternative zum End Befehl, wenn man sein Makro beenden (abbrechen) will, damit es nicht ins aufrufende Programm zurückkehrt!
Bevor ich da wieder einen Fehler mache frage ich lieber mal einen Experten
Gruss Adis

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: An Nepumuk - Stopp Befehl als Alternative
30.07.2014 13:53:50
Rudi
Hallo,
Stop unterbricht die Ausführung nur, der Code bleibt also mittendrin hängen.
Eine Alternative ist die Übergabe eines Parameters an die untergeordneten Subs, der nach Rückkehr ausgewertet wird.
Sub Makro1()
Dim bolEnd As Boolean
Makro2 bolEnd
If bolEnd Then Exit Sub
Makro3 bolEnd
If bolEnd Then Exit Sub
Makro4
End Sub
Sub Makro2(bolEnd As Boolean)
bolEnd = MsgBox("beenden?", vbYesNo) = vbYes
End Sub
Sub Makro3(bolEnd As Boolean)
bolEnd = MsgBox("jetzt beenden?", vbYesNo) = vbYes
End Sub
Sub Makro4()
MsgBox "HuHu"
End Sub

Gruß
Rudi

Anzeige
AW: An Nepumuk - Stopp Befehl als Alternative
30.07.2014 18:07:19
Nepumuk
Hallo Adis,
Exit Sub mitten im Code macht man nur, wenn es nicht anders geht.
Public Sub Test1() 'So nicht
    If Cells(1, 1).Value <> 1 Then Exit Sub
    'Weiterer Code
End Sub

Public Sub Test2() 'So besser
    If Cells(1, 1).Value = 1 Then
        'Weiterer Code
    End If
End Sub

Test1 ist sogenannter Spagetticode, Test2 strukturierte Programmierung.
Das war es auch was ich an deinem Code bemängelt habe, denn das macht das Ganze sehr unübersichtlich.
Gruß
Nepumuk

Anzeige
AW: An Nepumuk - Stopp Befehl als Alternative
30.07.2014 19:15:59
Daniel
Naja das mit dem Exit Sub = unübersichtlicher Spaghetti-Code würde ich so pauschal mal nicht stehen lassen.
ein.
Sub Test
If Bedingung Then Exit Sub
1000 Zeilen Code
End Sub

ist wahrscheinlich übersichtlicher als
Sub Test
If Bedingung Then
1000 Zeilen Code
end If
end Sub
ebenso kritisch, wenn die Abbruchbedingung in einer mehrfach verschachtelten Schleife steckt.
Wenn man hier ohne Exit Sub mitten drin einen Abbruch erzeugen will, wirds aufwendig.
Aufpassen muss man bei einem Exit Sub mitten im Code jedoch, wenn man Einstellungen in Excel verändert, wie wieder rückgängig gemacht werden sollten (Application.EnableEvents, Application.Calculation).
Sowas wird dann gerne vergessen.
Gruß Daniel

Anzeige
AW: An Nepumuk - Stopp Befehl als Alternative
30.07.2014 19:28:13
Adis
Danke an alle
ich denke Programmieren hat etwas mit Lernerfahrung und persönlicher Handschrift zu tun.
Man verwendet bevorzugt das was man gelernt hat und entwickelt im Lauf der Zeit seinen eigenen Stil.
Beispiel Autofahren: (oder Raucher)
wer gelernt hat die Kupplung schleifen zu lassen wird sich das nur schwer abgewöhnen.
Mein Makro Wissen stammt aus Data Becker Zeit von einer 31/2 Zoll Beispiel Diskette.
Gruss Adis

AW: An Nepumuk - Stopp Befehl als Alternative
30.07.2014 20:08:33
Nepumuk
Hallo Daniel,
ich habe keine Prozedur mit 1.000 Zeilen. Im Höchstfall sind es 100 und da fange ich schon an Aufzuteilen, wenn es geht. Ist auch besser um Fehler schneller einzugrenzen.
Bei ineinander verschachtelten Schleifen mache ich das auch. Ich schrieb ja, wenn es nicht anders geht oder besser gesagt, wo es einen erheblichen Aufwand bedeutet.
Gruß
Nepumuk

Anzeige
AW: An Nepumuk - Stopp Befehl als Alternative
30.07.2014 20:26:44
Daniel
Auch bei kurzen Prozeduren finde ich das:
IF Bediungung Then Exit Sub
übersichtlicher
als
IF Bediungung Then
End if
insbesondere, wenn die Prüfungen zuerst gemacht werden und es mehrere gibt (kommt Eventmakros wie Change/SelectionChange/BeforeDoubleClick öfters vor).
Gruß Daniel

Da hast du vollkommen recht, ...
30.07.2014 21:02:08
Luc:-?
…Daniel,
denn echter „Spaghetti-Code“ sieht ganz anders aus: Immer wieder irgendwo was ergänzt und dann wild rauf und runter gesprungen oder auch noch ganze Blöcke xfach eingefügt, worüber man sich dann bei auftretenden Fehlern bzw Änderungen besonders freuen darf. Ich habe da schon Grauenvolles gesehen und das dann wirklich über Tsd(e) Zeilen…
Ich finde, es wird zu oft und zu unrecht mit „Nudelgerichten“ gedroht, viell ja auch, weil (C-)Kids die so mögen, Pasta…! ;-))
Gruß, Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige