Microsoft Excel

Herbers Excel/VBA-Archiv

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

IF-Bedingung erfüllt, Wert auf TRUE

Betrifft: IF-Bedingung erfüllt, Wert auf TRUE von: Thomas
Geschrieben am: 22.08.2014 10:48:06

Hallo zusammen,

Ich habe eine IF-Bedingung innerhalb einer For-Schleife. Wenn diese erfüllt ist, wird eine bestimmte Variable auf "True" gesetzt.

Die IF-Bedingung ist im Verlaufe der For-Schleife öfter wie einmal erfüllt, jedoch soll eine weitere Anweisung nur dann ausgeführt werden, wenn die Variable das allererste Mal auf "True" gesetzt wird. Wird die Variable dann ein zweites oder drittes mal auf "True" gesetzt, soll nichts mehr passieren.

Wie kann ich das realisieren?

Vielen Dank!

Gruß,
Thomas

  

Betrifft: AW: IF-Bedingung erfüllt, Wert auf TRUE von: Jack_d
Geschrieben am: 22.08.2014 11:02:00

Hallo Thomas

ich persönlich würde, ohne deinen Code jetzt zu kennen,
die Routine mit exit sub verlassen nachdem true erfüllt ist.



Grüße


  

Betrifft: AW: IF-Bedingung erfüllt, Wert auf TRUE von: Frank
Geschrieben am: 22.08.2014 11:06:10

Hallo Thomas,

setze gleichzeitig mit der Zuweisung des TRUE einen Zähler hoch und prüfe vor dem Ausführen der IF-Bedingung, ob er grösser als 1 ist.

Grüsse,
Frank


  

Betrifft: AW: IF-Bedingung erfüllt, Wert auf TRUE von: Luschi
Geschrieben am: 22.08.2014 11:08:46

Hallo Thomas,

hier mal ein praktischer Versuch:

Sub testBool()
    Dim b As Boolean, i1 As Integer, i2 As Integer
    
    i2 = 100
    b = True
    For i1 = 1 To i2
        If i1 Mod 10 = 0 Then
           If b Then
              MsgBox "Jetzt ist die IF-Bedingung das 1. Mal erfüllt!" & vbCrLf & vbCrLf & _
                     "Achtung, diese Meldung erscheint nie wieder!", 64, "zur Information..."
              b = False
           End If
        End If
    Next i1
    MsgBox "Schleifenende erreicht", 48
End Sub
Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: IF-Bedingung erfüllt, Wert auf TRUE von: Thomas
Geschrieben am: 22.08.2014 11:35:45

Danke für eure Tipps!
Ich werde sie ausprobieren.

Gruß,
Thoams


  

Betrifft: Prinzipiell löst man so etwas wie folgt ... von: Luc:-?
Geschrieben am: 22.08.2014 20:26:33

…am Elegantesten, Thomas (kursiv → entsprd Daten/CodeKonstrukte):

Dim isAbbr As Boolean, ix As Long …
…
For ix = m To n
    …
    Let isAbbr = bedingungsvgl
    If isAbbr Then Exit For
    …
Next ix
If isAbbr Then    'falls davon noch Anderes abhängig gemacht wdn soll!
    …
End If
…
Das fktt mit einem For Each-Zyklus im Prinzip genauso, aber ohne die Variable isAbbr gibt's zwischen beiden ZyklusTypen Unterschiede:
For ix = m To n
    …
    If bedingungsvgl Then Exit For
    …
Next ix
If ix <= n Then
    …
End If
…bzw …
Dim …, datFeld, lVar 'As Variant
…
For Each lVar In datFeld
    …
    If bedingungsvgl Then Exit For
    …
Next lVar
If Not IsEmpty(lVar) Then    'nur im Weiterbhdlsfall!
    …
End If
…oder falls es sich um Objekte wie bspw einen Bereich handelt …
Dim …, Bereich As Range, zBer As Range
…
For Each zBer In Bereich
    …
    If bedingungsvgl Then Exit For
    …
Next zBer
If Not zBer Is Nothing Then    'nur im Weiterbhdlsfall!
    …
End If
Im Falle der 3 letzten Bspp wurde die Bedingung niemals erfüllt, wenn entweder ix>n oder lVar=Empty bzw zBer Nothing ist.
Gruß, Luc :-?