die Frage hatte ich hier kürzlich in anderem Kontext schon mal
gestellt, aber keine Antwort erhalten.
Aus der Prozedur
Sub OhneAusgang()
Dim Schalter As Integer
Schalter = 1
Do While Schalter <> 0
InputBox "gib irgendwas ein"
Loop
End Sub
komme ich nur über Excel-Abbruch mit Shift+Alt+Entf raus.
Gibt es eine Möglichkeit, die Prozedur abzubrechen, ohne gleich so
brutal vorzugehen?
--
Als Newbie grüsst
Eberhard mit XL2000
Sub OhneAusgang()
Dim Schalter As Integer
Dim StWert As String
Do
StWert = Application.InputBox("Anzahl der Ausdrucke", "Drucken", "",
Type:=2)
If StWert < "" Then Exit Do
Loop
End Sub
Gruß Hajo
"Eberhard Funke" <Eberhard.Fu...@t-online.de> schrieb im Newsbeitrag
news:3e64878f...@news.btx.dtag.de...
> Aus der Prozedur
>
> Sub OhneAusgang()
> Dim Schalter As Integer
> Schalter = 1
> Do While Schalter <> 0
> InputBox "gib irgendwas ein"
> Loop
> End Sub
>
> komme ich nur über Excel-Abbruch mit Shift+Alt+Entf raus.
> Gibt es eine Möglichkeit, die Prozedur abzubrechen, ohne gleich so
> brutal vorzugehen?
Als Tastenkombination wäre dort Strg - Untbr zu empfehlen. (Unterbrechen
liegt auf der Pause-Taste, rechts oben auf der Tastatur) Die Kunst dabei ist
allerdings, dass Du diese Tastenkombination drücken musst, nachdem Du Deine
InputBox bestätigt hast und bevor die nächste InputBox aufgeht. Diese
Zeitspanne ist doch arg kurz...
Ansonsten bekommst Du diese Schleife beendet, indem Du eine vernünftige
Abbruchbedingung einbaust. In Deiner Schleife ändert sich der Wert von
Schalter nicht, also kann diese Schleife auch nicht beendet werden. Sie
macht folglich keinen Sinn. (Ich selbst bin meister im programmieren solcher
Endlosschleifen *g*)
Die Variante mit 'Exit Do' ist programmatisch sehr unschön zu lesen und kann
ich nicht empfehlen. Vgl. Beitrag zu Hajo.
Greetinx
Reiner
> Sub OhneAusgang()
> Dim Schalter As Integer
> Dim StWert As String
> Do
> StWert = Application.InputBox("Anzahl der Ausdrucke", "Drucken",
"",
> Type:=2)
> If StWert < "" Then Exit Do
> Loop
> End Sub
Aufgabe gelöst, aber findest Du eine Schleife gänzlich ohne Abbruchbedingung
wirklich so sinnvoll? Wozu gibt es denn ein Until?
Sub OhneAusgang()
Dim StWert As String
Do
StWert = InputBox("Anzahl der Ausdrucke", "Drucken", "",Type:=2)
Loop Until StWert <> ""
End Sub
Die Variante wäre doch wirklich etwas übersichtlicher.
Exit Do
Exit For (oder Spielereien an der Durchlaufvariablen)
gehören im Prinzip verboten.
Greetinx
Reiner
On Tue, 4 Mar 2003 19:48:14 +0100, "Reiner Wolff"
<Reiner...@gmx.net> wrote:
>Moin Eberhard,
>
>> Aus der Prozedur
>>
>> Sub OhneAusgang()
>> Dim Schalter As Integer
>> Schalter = 1
>> Do While Schalter <> 0
>> InputBox "gib irgendwas ein"
>> Loop
>> End Sub
>>
>> komme ich nur über Excel-Abbruch mit Shift+Alt+Entf raus.
>> Gibt es eine Möglichkeit, die Prozedur abzubrechen, ohne gleich so
>> brutal vorzugehen?
>
>Als Tastenkombination wäre dort Strg - Untbr zu empfehlen. (Unterbrechen
>liegt auf der Pause-Taste, rechts oben auf der Tastatur) Die Kunst dabei ist
>allerdings, dass Du diese Tastenkombination drücken musst, nachdem Du Deine
>InputBox bestätigt hast und bevor die nächste InputBox aufgeht. Diese
>Zeitspanne ist doch arg kurz...
Genau so was hatte ich gesucht, nur für meine Reaktionsgeschwindigkeit
passend ;-)
>
>Ansonsten bekommst Du diese Schleife beendet, indem Du eine vernünftige
>Abbruchbedingung einbaust.
Klar. Aber es ging mir darum, wie ich aus so einem Ding rauskomme,
wenn ich durch einen dusseligen Programmierfehler in eine derartige
auswegslose Situation schliddere.
> In Deiner Schleife ändert sich der Wert von
>Schalter nicht, also kann diese Schleife auch nicht beendet werden. Sie
>macht folglich keinen Sinn.
Das war ja gerade die Absicht, um das Problem verständlich zu machen.
>
>Die Variante mit 'Exit Do' ist programmatisch sehr unschön zu lesen und kann
>ich nicht empfehlen. Vgl. Beitrag zu Hajo.
>
>Greetinx
>Reiner
>
Hajo und Dir vielen Dank.
Wenn es darum geht, nicht per Programm, sondern einfach nur aus der
endlos-Schleife heraus zu kommen, kannst Du auch "Escape" drücken.
Dann kommst Du in den VBE zurück, mit den 3 Möglichkeiten:
Testen / Beenden / Fortfahren
mit freundlichem Gruß
Jean
"Eberhard Funke" <Eberhard.Fu...@t-online.de> schrieb im Newsbeitrag
news:3e64878f...@news.btx.dtag.de...
das war natürlich auch mein erster Gedanke, aber hast Du das mal mit
DIESER Prozedur versucht? Nach Drücken von "Escape" zuckt der BS nur
nervös zusammen, und als letztes Mittel bleibt eben nur
Shift+Strg+Entf
On Tue, 4 Mar 2003 22:44:21 +0100, "Jean Ruch" <jean...@web.de>
wrote: