Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Äußere Schleife aus innerer Schleife verlassen | Herbers Excel-Forum


Betrifft: Äußere Schleife aus innerer Schleife verlassen von: Martin
Geschrieben am: 07.01.2012 11:15:44

Hallo liebe Excelfreunde,

wie allgemein bekannt ist, kann eine Schleife mit Exit For verlassen werden. Kann in einer doppelten Schleife die äußere Schleife einfach aus der inneren Schleife verlassen werden.

Sub Schleifentest()
    Dim i As Long, j As Long

    For i = 1 To 10
    
        For j = 1 To 10
            Debug.Print "j-Durchlauf: " & j
            Exit For 'Beendet nur innere Schleife, soll aber auch äußere Schleife beenden
        Next j
    
        Debug.Print "i-Durchlauf: " & i
    
    Next i

End Sub
Ich würde eine zusätzliche Variable Dim ExitLoop As Boolean definieren und in der inneren Schleife auf True setzen, wenn die äußere Schleife (If ExitLoop = True Then Exit For) verlassen werden soll.
- Aber vielleicht geht es ja einfacher ?!

Viele Grüße

Martin

  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Hajo_Zi
Geschrieben am: 07.01.2012 11:19:07

Hallo martin,

mache die brutale Methode End

GrußformelHomepage


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Martin
Geschrieben am: 07.01.2012 11:26:16

Hallo Hajo,

vielen Dank für die schnelle Antwort. Mit End wird ja das ganze Makro beendet und nachfolgender Code würde nicht abgearbeitet werden. Ich hatte gehofft, dass mein Makro verdeutlicht, dass es mir um eine allgemeine Lösung geht. Mit der Boolean-Variable habe ich "meinen" Lösungsweg vorgestellt, aber vielleicht gibt es ja eine einfachere Methode (also ohne HilfsVariable).

Viele Grüße

Martin


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Hajo_Zi
Geschrieben am: 07.01.2012 11:31:53

Hallo martin,

Dein Makro enthielt nur die beidemn Schleifen, kein Weitreren Code.
In der äußeren Schleife
If ExitLoop then Exit For.

Gruß Hajo


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Martin
Geschrieben am: 07.01.2012 11:39:55

Hallo Hajo,

du hast Recht, ich hätte das extra erwähnen sollen. Trotzdem habe ich gerade etwas von dir gelernt: Scheinbar muss bei Abfrage einer Boolean auf ihren Wahrheitsgehalt kein "= True" abgefragt werden. Kann das auf alles verallgemeinert werden, bei dem es nur einen True/False-Wert gibt (z.B. If Checkbox1 then ...)?


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Hajo_Zi
Geschrieben am: 07.01.2012 11:48:29

Hallo Martin,

Ja, Standard muss nicht angegeben werden. wie auch Value bei Zelle oder Textbox.

Gruß Hajo


  

Betrifft: Danke von: Martin
Geschrieben am: 07.01.2012 11:56:28

Hallo Hajo,

super, dann habe ich doch wieder etwas neues gelernt (...obwohl ich es schade finde, dass bei verschachtelten Schleifen die äußeren Schleifen nicht so einfach aus ihren inneren Schleifen heraus verlassen werden können).

Viele Grüße

Martin


  

Betrifft: If blnOK = True Then - Unfug von: Erich G.
Geschrieben am: 07.01.2012 12:16:29

Hi Martin,
da Hajo Antwort m IMHO nicht so ganz deine Frage trifft, versuche ich es mal:

Wenn blnVar eine boolsche Variable ist, haben die Ausdrücke
blnVar
und
blnVar = True
den selben Wert - egal, ob blnVar wahr oder falsch ist. Also muss man "blnVar = True" nicht hinschreiben.

Noch etwas deutlicher wirds, wenn man statt einer Variablen eine Aussage nimmt,
also z. B. "x=5" statt blnVar. Dann schreibt man doch nur

If x=5 then
und nicht
If (x=5) = True then

Wenn der Name einer bln-Variablen gut gewählt ist, ist das doch auch sehr sprechend:
If blnTuerOffen then

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: If blnOK = False Then - Unfug von: Erich G.
Geschrieben am: 07.01.2012 12:19:07

Hi Martin,
auch die Verneinung kommt ohne True/False aus:

If Not blnTuerOffen then
finde ich einfach besser als
If blnTuerOffen = False then

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: If blnOK = True Then - Unfug von: Martin
Geschrieben am: 07.01.2012 12:27:52

Hallo Erich,

mich hat im Nachhinein Hajos Satz "Standard muss nicht angegeben werden" verunsichert. Wenn eine bln-Variable definiert wird, ist diese doch standardmäßig auf "False" gesetzt, oder? In der Excel-Hilfe steht nichts zum Standardwert des Boolean-Datentyps:

Variablen vom Datentyp Boolean werden als 16-Bit-Zahlen (2 Bytes) gespeichert, die nur die Werte True oder False annehmen können. Variablen vom Datentyp Boolean werden als Wahr oder Falsch ausgegeben, wenn Print verwendet wird, bzw. als #TRUE# oder #FALSE#, wenn Write # verwendet wird. Mit den Schlüsselwörtern True und False weisen Sie einer Variablen vom Typ Boolean einen von zwei Zuständen zu.

Beim Umwandeln anderer numerischer Datentypen in Werte des Typs Boolean wird 0 zu False, und alle anderen Werte werden zu True. Beim Umwandeln von Werten des Datentyps Boolean in andere Datentypen wird False zu 0 und True zu -1.


Viele Grüße

Martin


  

Betrifft: Hajo meinte Standardeigenschaft von: Erich G.
Geschrieben am: 07.01.2012 12:35:46

Hi Martin,
bei Hajo ging es nicht um einen Standardwert einer Variablen, sondern um die Standardeigenschaft eines Objekts.
Das meinte ich damit, dass er wohl nicht so recht deine Frage getroffen hat.

Hajo meinte, dass man CheckBox oder Checkbox.Value schreiben kann. Mit dem "True" hat das nichts zu tun.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Hajo meinte Standardeigenschaft von: Martin
Geschrieben am: 07.01.2012 12:49:58

Hallo Erich,

vielen Dank für deine ausführlichen Erklärungen, du hast mir sehr weitergeholfen.

Viele Grüße

Martin


  

Betrifft: If bln = True Then ... von: Erich G.
Geschrieben am: 07.01.2012 14:08:15

Hi Martin,
danke für Deine Rückmeldung!
Da möchte ich jetzt gleich noch eins draufsetzen - auch wenn du das gar nicht brauchst :-)

Sub gleichTrue()
   Dim blnV As Boolean
   Dim x As Long, ww As Integer

'  If-Anweisung:         If #### Then ww = 1
'
'  #### ist ein Ausdruck.
'  #### muss True oder False sein oder einen Datentyp ergeben,
'            der implizit in Boolean konvertiert werden kann.
' (http://msdn.microsoft.com/de-de/library/752y8abs.aspx)

' Beispiele:
   If x Then ww = 1           ' x ist 0, wird konvertiert zu False.
   
   If x = 0 Then ww = 1       ' Die Gleichung x=0 ist True.
                        ' Dazu müssen die Ausdrücke auf der linken
                        ' und der rechten Seite der Gleichung ausgewertet
                        ' und dann die Ergebnisse vergleichen werden.
                        ' Deutlicheres Beispiel:
   If x + 17 = 51 / 3 Then ww = 1
                              ' x + 17 ist 17
                              ' 51 / 3 ist 17
                              ' Die Gleichung 17 = 17 ist True
   
   If blnV Then ww = 1                 ' blnV ist False.
   
   If blnV = True Then ww = 1          ' Die Gleichung blnV=True ist False.

   If (blnV = True) = True Then ww = 1 ' Die Gleichung (blnV=True)=True ist False,
                                       ' denn (blnV=True) ist (False) und
                                       ' (False) ist nicht gleich True.
End Sub
Schreibt man so etwas wie "If xyz = True Then", zwingt man VBA unnötigerweise dazu,
eine Gleichung (und damit zunächst die beiden Seiten der Gleichung) auszuwerten.
Dabei hätte es ausgereicht, den Wert von xyz nachzusehen.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schones Wochenende!


  

Betrifft: noch ein aktuelles Beispiel von: Erich G.
Geschrieben am: 07.01.2012 20:24:59

Hi Martin,
noch ein nettes Beispiel für den zweifelhaften Nutzen von "= True" bzw. "= False":

Sub WennCWluegt()
   Dim CWluegt As Boolean
   
   If CWluegt = True Then Rücktritt    ' Wenn es wahr ist, dass CW lügt, dann Rücktritt
   If CWluegt Then Rücktritt           ' Wenn CW lügt, dann Rücktritt
   
   If CWluegt = False Then Dableiben   ' Wenn es falsch ist, dass CW lügt, dann Dableiben
   If Not CWluegt Then Dableiben       ' Wenn CW nicht lügt, dann Dableiben
End Sub

Sub Rücktritt(): End Sub
Sub Dableiben(): End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: Entschuldige bitte, aber es entstehen neue Fragen von: Martin
Geschrieben am: 07.01.2012 22:49:52

Hallo Erich,

vielen Dank für deine Mühe. Ehrlich gesagt verstehe ich den Sinn von Rücktritt() und Dableiben() nicht ganz. Oder soll ich das alles im Einzelschrittmodus durchgehen und aufpassen, wann die beiden Makros ausgelöst werden?

Welche Funktion hat der Doppelpunkt in folgender Zeile?

Sub Rücktritt(): End Sub
Wird damit einfach nur ein Zeilenumbruch im Code unnötig?

Viele Grüße

Martin


  

Betrifft: Fragen über Fragen :-) von: Erich G.
Geschrieben am: 08.01.2012 00:05:55

Hi Martin,
sorry, da habe ich dich durch meine kleine Jux-Idee mit dem noch-BuPrä-Beispiel abgelenkt.
Wichtig war mit allein das, was in WennCWluegt jeweils vor dem Then/dann steht.

Rücktritt und Dableiben stehen da nur, weil ich etwas mit irgend einer Bedeutung hinter Then/dann schreiben wollte,
und die Routinen Rücktritt und Dableiben gibt es nur, damit sich das kompilieren ließ.
Und ja: Der Doppelpunkt 'spart' nur einen Zeilenumbruch... ;-)
Ich hätte die beiden Rotinen einfach weglassen sollen.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönen Sonntag!


  

Betrifft: Fragen über Fragen und kein Ende :-) von: Luc:-?
Geschrieben am: 08.01.2012 01:27:08

Kennst du das, Erich?
Es scheint bei der Basis für dein polit-aktuelles Bsp um einiges mehr zu gehen als es den Anschein hat!
Gruß + schöSo, Luc :-?


  

Betrifft: @Luc von: Erich G.
Geschrieben am: 08.01.2012 11:36:20

Hi Luc,
ja, diese Site kannte ich schon ( auch, weil du sie hier schon früher erwähnt hast :-) ).

Ja, auch IMHO geht es um mehr als das, was jetzt so wichtig erscheint.
Frei nach Hagen Rether:

Jetzt wird eine Sau lautstark durchs Dorf getrieben - und die viel größeren Schweinerein nimmt keiner wahr.
"Aber was reg ich mich auf..." (Hagen Rether)

Dir und allen anderen einen schönen Sonntag!
Grüße aus Kamp-Lintfort von Erich


  

Betrifft: OT@Erich: Na, prima! Freut mich, dass das ... von: Luc:-?
Geschrieben am: 08.01.2012 13:52:14

…was bewirkt hat, Erich! ;-)
Übrigens scheint auch das neue Buch von Esther Vilar recht interessant und vor allem aufschlussreich zu sein. Erklärt auch, warum Top-Politiker und -Manager so schlecht bei Kreativitätstest u.ä. abschneiden… ;-)
Dito schöSo, Luc :-?


  

Betrifft: OT @ Erich, Luc, Interessierte von: Reinhard
Geschrieben am: 09.01.2012 19:45:18

Hallo,

@Luc danke für den Link zu Nachgedacht.

Wie seht ihr das im Sinne von Geiz ist geil u.ä. wenn unter dem Betreff
"Alles wird billiger"
in einem Forum schrieb jmd den genannten Betreff und diesen Beitrag:

*********************************************************************************************
"heute in der Mittagpause kam von einer Kollegin, deren Lieblingsbeschäftigung das Lamentieren ist, mal
wieder die Leier 'Alles wird teurer' (seit dem € sowieso).
Das ließ mir keine Ruhe und so verbrachte ich den Rest der Mittagpause damit das Gegenteil zu zeigen.
Ergebnis ist u.a. diesr Link
http://finanzwertig.de/kaufkraft-vergleich-frueher-w...
Ist schon interessant wie gut es uns heute geht und wie es unsere Eltern/Großeltern geschafft haben,
nicht im Elend zu versinken.

Die Argumention der Bedenkenträger möge beginnen!
*********************************************************************************************

Ich antwortete ihm so:
*********************************************************************************************
:::: Die Argumention der Bedenkenträger möge beginnen!

warum diese diese Verunglimpfung? jeder der die Teuerung anders sieht als du ist ein Bedenkenträger?
Bedenkenträger ist m.E. eine negative Abwertung, ich sehe das wie dieser Rob.
(Anmerkung, Rob ist ein Link auf
http://de.answers.yahoo.com/question/index?qid=20080105170929AAkdsRC
)


::::heute in der Mittagpause kam von einer Kollegin, deren
::::Lieblingsbeschäftigung das Lamentieren ist, mal wieder die
::::Leier 'Alles wird teurer' (seit dem € sowieso).

Schon wieder Verunglimpfung :-(
"heute in der Mittagpause sagte eine Kollegin: 'alles wird teurer'"
wäre ein sachlicher Anfang eines Meinungsaustausches darüber ob man das auch so sieht gewesen.

Okay, im Bezug auf den Brettnamen plauder ich mal so vor mich hin.
Ich lasse mal weg auf wessen Kosten "verbilligungen" gehen/gingen, also Umweltzerstörung, unmenschlicheer Tierumgang, Ausbeutung von von Menschen, natürlich auch Kindern und deren Körperliche schäden durch Sklavenarbeit.

Z.B. Puerto Rico. Sie exportieren sehr viele Bananen, Anbau in Monokulturen, Monokulturen bedeuten zwangsläufig Einsatz von giftiger Chemie. Die das paar jahre versprühen werden nicht alt...
Aber so Peanuts wollte ich ja weglassen *erinner*

In dem von dir gezeigten Link steht eine Tabelle mit dem Vergleich
wie lange man 1950 bzw. 2009 für eines der dort aufgeführten ca. 15
Produkte arbeiten mußte.

Quelle dieser Tabelle ist das Institut der Deutschen Wirtschaft
Logisch stellen sie sich gut dar.
So wie Philipp Rösler auch die ähem sehr guten Leistungen von Schwarz/gelb herausstellt.
Fazit, diese Tabelle wurde nicht von einer unabhängigen Quelle erstellt.

Dann zum Vergleich 1950/2009.
Man kann seriös nur Gleiches mit Gleichem vergleichen.
Brotpreis, Brot wurde damals beim Bäcker gekauft, Discounter in der Dimension wie heute gabs damals nicht.
Wie wäre denn der Vergleich ausgefallen wenn dort die Bäcker-Brotpreise miteinander verglichen werden?

Wie hätten die Vergleiche für Bruttomiete pro qm ausgesehen, dito für Nettomiete?
Preise für öffentlichen Nahverkehr und auch Fernverkehr (Zug).

Und der Euro wurde 1999 als Buchgeld eingeführt, 2002 als Währung.
Wie sähe denn ein Vergleich 1999/2011 aus?
In diesem Licht müßte man die Aussage 'alles wird teurer' mal beleuchten *find*

Habe fertig

Gruß
Reinhard
*********************************************************************************************

Okay, es ist schon richtig wenn ich da Rösler höre oder lese das alles billiger ist, dann kann ich schwer sachlich werden.
Für mich in meinem Hirn schwingt da automatisch mit zu welchem menschlichen Preis das erkauft wurde daß hier was billiger ist.
Ich krieg halt die Bilder nicht aus dem Kopf die ich habe weil ich sie sah, grad in einem Bericht über Puerto Rico.
Da sah man einen Sprüher, wie zum Badeurlaub gekleidet also freier Zugang dessen was er versprüht zu seiner haut.
Eine für gase lächerliche Staubmaske vor dem Mund.
Und die sah verdammt neu aus, also nur für's Fernsehen, ansonsten kriegen sie die Dinger nicht.
Da es eine Dokumentation anschließend daten, Fakten betreffend frühe Sterblichkeit.

Aber gut bzw. schlecht. Ich habe leider dieser Statistik eines Instituts der deutschen Wirtschaft nichts "gleichwertiges" entgegenzusetzen.

Vor Jahren hat doch diese gewaltige gewinne einfahrende deutsche Nation den 100.000 Blinden in D
Zuschüße für ein Braille-telefon gewaltig gekürzt oder gestrichen.
Makaber genug, sieht der Blinde es also auch so daß alles billiger wid?

Ich habe auch diese Fernsehbilder nicht vergessen, im Zuge der sogennanten Gesundheitsreform nahm sich ein "Einstufer" oder wie man die nennt zwei Stunden Zeit um einer sehr alten Frau zuzusehen
wie sie da mühsam erst nach dieser Zeit ihren Teller aufgegessen hatte.
Dann kreuzte das Warzenschwein im Pflegebeurteilungsbogen der Dame an, "braucht keine Hilfe bei der nahrungsaufnahme" oder wie das im Behördendeutsch genannte wird.

Wahrscheinlich hat diese Dreckswanze der dame noch die drei Stunden zugesehen die sie braucht um sich zu duschen oder in der badewanne zu reinigen.
Um dann anzukreuzen "braucht keine Hilfe bei Körperhygiene :-(

Sorry, aufgrund der Dinge die mich aufregen wich ich leicht vom roten Faden ab.

Jetzt mal wirklich im Versuch alles wegzulassen und nur rein auf die Preise zu reagieren,
Seht ihr beide es auch so wie da die deutsche Wirtschaft?
"Alles" ist sowieso meist nie korrekt.

Zugegeben, bestimmte Produkte sind billiger geworden.
Optimierte herstellungsverfahren, Chinaimporte u.v.m.
Aber was ist z.B. mit den ganzen Dienstleistungen?
Handwerker, Kneipen, usw.

Gruß
Reinhard


  

Betrifft: Tja, Reinhard, offensichtl gibt's zZ noch zuviel.. von: Luc:-?
Geschrieben am: 10.01.2012 08:47:39

…nachdenkl Menschen bei uns, aber das soll und wird sich ja mit den nächsten Generationen ändern. Wenn ich so übers W³ blicke und auch die xlForen nicht vergesse, müssen sich künftige Regierungen wohl dsbzgl nur noch wenig Sorgen machen — einäugig regiert man am besten Blinde. ;->
Morrn, Luc :-?


  

Betrifft: AW: Fragen über Fragen :-) von: Martin
Geschrieben am: 08.01.2012 06:01:23

Hallo Erich,

okay, alles klar! Vielen Dank.
Ich wünsche dir einen schönen Sonntag - ...ich muss leider arbeiten :-(
Gestern habe ich mir übrigens drei Excel-Bücher bestellt, um mehr zu lernen.

Viele Grüße

Martin


  

Betrifft: AW: Fragen über Fragen :-) von: Reinhard
Geschrieben am: 09.01.2012 20:15:48

Hallo Martin,

nenne mal in deinem Interesse die Buchnamen, Autoren solange du ggfs manche davon noch zurückschicken kannst.
Bei manchen Büchern hättest du besser für das gleiche Geld Briketts kaufen sollen, die haben einen höheren Heizwert :-( :-)

Gruß
Reinhard


  

Betrifft: Gleich drei? Wetten, dass die nahezu identisch... von: Luc:-?
Geschrieben am: 10.01.2012 08:54:41

…sind, Martin,
es sei denn, da ist auch noch xlVBA dabei, aber die nehmen sich dann ggseitig auch nicht viel. Habe schon Unsinn bei „Experten” gelesen, ansonsten idR nur das Übliche, denn die Schreiben doch nur von einander oder bei MS ab. Das ist der Zeitdruck, Erfahrungen sammeln u.Forschen oder Bücher schreiben…!
Morrn, Luc :-?


  

Betrifft: AW: Gleich drei? Wetten, dass die nahezu identisch... von: Martin
Geschrieben am: 10.01.2012 10:44:10

Hallo Reinhard, hallo Luc,

ich habe mir ein sehr altes und zwei neue Bücher bestellt:

Ein Buch zu Ribbon-Programmierung für Excel 2007:
Ribbon-Programmierung für Office 2007 (Autor André Minhorst)
http://www.amazon.de/Ribbon-Programmierung-Office-2007-Andr%C3%A9-Minhorst/dp/3827327385/ref=sr_1_2?ie=UTF8&qid=1326187877&sr=8-2
... denn zu dem Thema habe ich keine anderes Buch gefunden:

Ein Buch zur VBA-Programmierung:
Excel-VBA Master Class: Einstieg für Anspruchsvolle (von Michael Schwimmer)
http://www.amazon.de/Excel-VBA-Master-Class-Einstieg-Anspruchsvolle/dp/3827325250/ref=sr_1_1?ie=UTF8&qid=1326188423&sr=8-1
... weil ich mich auch für Klassenprogrammierung und Zugriff auf Access-Datenbanken interessiere.

und noch ein sehr altes Buch (englisch) für nur 3,49 Euro, das hier im Forum bei einem für mich interessanten VBA-Code als Quelle genannt wurde:
Excel 2000 VBA Programmer's Reference (von John Green, Stephen Bullen & Filipe Pereira Martins)
http://www.amazon.de/Excel-2000-VBA-Programmers-Reference/dp/1861002548/ref=sr_1_4?ie=UTF8&qid=1326188193&sr=8-4

Gut, auf das letzte Buch hätte ich vielleicht verzichten können. Aber aufwärtkompatibel zu neueren Excel-Versionen ist der Code doch meistens (mal abgesehen von den wenigen Ausnahmen wie FileSearch) und bei nur 3,49 Euro muss ich mich im Falle eines Fehlkaufes nicht wirklich ärgern. Die ersten beiden Bücher überschneiden sich inhaltlich garantiert nicht.

Viele Grüße

Martin


  

Betrifft: Na, dann iss ja jut... ;-) owT von: Luc:-?
Geschrieben am: 10.01.2012 17:38:46

:-?


  

Betrifft: AW: Entschuldige bitte, aber es entstehen neue Fragen von: Luschi
Geschrieben am: 08.01.2012 00:09:24

Hallo Martin,

mit dem ':' kann man Befehle innerhalb der gleichen Zeile trennen.
'Beispiel
MsgBox 1: MsgBox 2: MsgBox 3

hat die gleiche Wirkung wie

MsgBox 1
MsgBox 2
MsgBox 3

Mit freundlichem Gruß Luschi
aus klein-Paris


  

Betrifft: AW: Entschuldige bitte, aber es entstehen neue Fragen von: Martin
Geschrieben am: 08.01.2012 05:57:45

Hallo Luschi,

danke, das hatte ich schon vermutet. Ich wundere mich nur ein wenig über den Sinn, denn warum sollte man einen Zeilenumbruch verhindern wollen?

Viele Grüße

Martin


  

Betrifft: AW: Entschuldige bitte, aber es entstehen neue Fragen von: Luschi
Geschrieben am: 08.01.2012 10:54:43

Hallo Martin,

Befehlszeilentrenner sind keiner Errungenschaft von M$ und Vb6/Vba/VB.Net. In Zeiten, wo die Bildschirme kaum 12-14'' überschritten,war man froh, wenn ellenlange Variablen-Definitionen als Block auf dem BS sichtbar waren.
1977 mußte ich in einer Semesterarbeit mit Fortran-77 am 'Robotron-300' ohne Bildschirm am Fernschreiber mit Lochstreifenstanzer den Programmcode eintippen und immer fleißig die Einzelbefehle per Trenner so auf eine Zeile platzieren wie auf der Breite der Fernschreibseite raufpaßte. Das war fast wichtiger als korrekter Programmcode (es sollte Papier für den Fernschreiber gespart werden). Der Witz daran: den ausgedruckten Fehlercode bekam man Zeilenweise als Meterware von einem A3!-Leporello-Drucker zurück.

Gruß von Luschi
aus klein-Paris


  

Betrifft: OT@Luschi: Na, dann bist du ja 'altgedient' und... von: Luc:-?
Geschrieben am: 08.01.2012 13:57:21

…kennst sicher auch die RT+DV, Luschi;
ca 1970 (evtl 09) war da drin (bzw drauf) ein Bild von meinen damaligen Mitstreitern (und mir) am C8205. ;-)
Gruß+schöSo, Luc :-?


  

Betrifft: Äußere Schleife aus innerer Schleife verlassen von: Erich G.
Geschrieben am: 07.01.2012 11:32:31

Hi Martin,
sicher geht das auch ohne das brutale "End":

Sub Schleifentest()
     Dim i As Long, j As Long
 
     For i = 1 To 10
         For j = 1 To 10
             Debug.Print "j-Durchlauf: " & j
             Exit For 'Beendet nur innere Schleife, soll aber auch äußere Schleife beenden
         Next j
         Debug.Print "i-Durchlauf: " & i & " vor Prüfung"
         If j <= 10 Then Exit For
         Debug.Print "i-Durchlauf: " & i & " nach Prüfung"
     Next i
     Debug.Print "Hier gehts weiter"
 End Sub
So gehts natürlich nur bei Zählschleifen, aber nicht bei "Each".

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: noch ne Variante von: Erich G.
Geschrieben am: 07.01.2012 11:48:27

Hi Martin,
noch ein wenig deutlicher:

Sub Schleifentest()
     Dim i As Long, j As Long, lngEnd As Long
 
     For i = 1 To 10
         For j = 1 To 4
             Debug.Print "j-Durchlauf: " & j
             If i > 2 And j > 2 Then Exit For   ' beendet innere Schleife
         Next j
         Debug.Print "i-Durchlauf: " & i & " vor Prüfung"
         If j <= 4 Then Exit For               ' beendet äußere Schleife
         Debug.Print "i-Durchlauf: " & i & " nach Prüfung"
     Next i
     Debug.Print "Hier gehts weiter"
 End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Martin
Geschrieben am: 07.01.2012 11:51:44

Hallo Erich,

auch dir vielen Dank für deine Antwort. Dein Lösungsvorschlag vermeidet bei "Zählschleifen" die Zusatzvariable, aber ich hatte auf eine allgemeine Lösungsmöglichkeit (in der Art "Exit For i" für Zählschleifen oder "Exit For Gruppe" bei Each-Schleifen) gehofft. Aber scheinbar gibt es soetwas nicht.

Viele Grüße

Martin


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Hajo_Zi
Geschrieben am: 07.01.2012 12:05:29

Hallo Martin,

teste mal. Setze in der inneren schleife den Zähler der äußeren auf Max.


Gruß Hajo


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Martin
Geschrieben am: 07.01.2012 12:17:08

Hallo Hajo,

ja, das ist mir klar. Allerdings sollte dann entweder kein zusätzlicher Code zwischen dem Ende der inneren Schleife und dem Ende der äußeren Schleife stehen oder eine Abfrage (If i = i-Schleifenende Then Exit For) stehen.

Viele Grüße

Martin


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Peter Feustel
Geschrieben am: 07.01.2012 12:44:49

Hallo Martin,

ich arbeite in einem sochen Fall immer mit einer boolschen Variablen, die ich setze und abfrage:

Sub Schleifentest()

Dim i      As Long
Dim j      As Long
Dim bEnde  As Boolean

   For i = 1 To 10
      For j = 1 To 10
         Debug.Print "j-Durchlauf: " & j
         bEnde = True
         Exit For 'Beendet nur innere Schleife, soll aber auch äußere Schleife beenden
      Next j
      If bEnde Then Exit For
      Debug.Print "i-Durchlauf: " & i
   Next i
              
End Sub

Gruß Peter


  

Betrifft: AW: Äußere Schleife aus innerer Schleife verlassen von: Martin
Geschrieben am: 07.01.2012 12:48:25

Hallo Peter,

dank dir für deine Antwort. Wie ich bereits geschrieben habe, mache ich es ebenso.

Viele Grüße

Martin


Beiträge aus den Excel-Beispielen zum Thema "Äußere Schleife aus innerer Schleife verlassen"