Do While Schleifen
14.05.2020 16:01:12
Dark
Mit Schleifen kenne ich mich noch nicht so gut aus und hoffe, ihr könnt mir da weiterhelfen.
In meiner Datei (https:\/\/www.herber.de/bbs/user/137549.xlsm) habe eine "Do While" Bedingung für eine Kontrollschleife formuliert. Damit möchte ich Kontrollen implementieren, die die Einhaltung unterschiedlicher Kriterien prüfen und Fehlermeldungen herausgeben, wenn diese nicht erfüllt werden. Dies soll auch dann noch weiter funktionieren, wenn Zeilen gelöscht oder neu eingefügt werden.
Beispielsweise habe ich nun 2 Kontrollbeispiele (es werden aber wahrscheinlich bis zu 100 Kontrollen). Für sich genommen und isoliert betrachtet funktioniert die Schleife zur ersten Kontrolle (siehe Beispiel 1 zur ersten Kontrolle) .
Jetzt möchte ich die zweite Kontrolle ergänzen und nachher auch mehrere Überprüfungen mit anderen Kriterien durchlaufen lassen. Allerdings funktioniert die Schleife dann nicht. Sie überprüft lediglich, ob die erste Kontrolle erfüllt ist und endet dann. Allerdings bräuchte ich eine Schleife, die die Kontrollen zusammenführt (wäre so was wie in Beispiel 2).
Daher wollte ich fragen, ob ich die Kontrollen zusammenführen kann und wie die Schleife in diesem Fall dann aussehen müsste?
Beispiel 1 zur ersten Kontrolle:
Public Sub Beispielprogramm_DynamischeZeilen1()
Dim intRow As Integer
intRow = 5
Do While Left(Worksheets("Tabelle1").Cells(intRow, 2), 2) "KR"
If Worksheets("Tabelle1").Cells(intRow, 3) = "" And _
Worksheets("Tabelle1").Cells(intRow, 4) = "" Then
MsgBox "Achtung: Inkonsitente Angaben(1) & vbNewLine & vbNewLine" _
& "Fehlermeldung: " & vbNewLine _
& "Unschlüssige Angaben." & vbNewLine & vbNewLine
Exit Do
Else
intRow = intRow + 1
End If
Loop
End Sub
Beispiel 2: Zusammengeführte Kontrollen
Public Sub Beispielprogramm_DynamischeZeilen1()
Dim intRow As Integer
intRow = 5
Do While Left(Worksheets("Tabelle1").Cells(intRow, 2), 2) "KR"
If Worksheets("Tabelle1").Cells(intRow, 3) = "" And _
Worksheets("Tabelle1").Cells(intRow, 4) = "" Then
MsgBox "Achtung: Inkonsitente Angaben(1) & vbNewLine & vbNewLine" _
& "Fehlermeldung: " & vbNewLine _
& "Unschlüssige Angaben." & vbNewLine & vbNewLine
Exit Do
Else
intRow = intRow + 1
End If
Loop
End Sub
Public Sub Beispielprogramm_DynamischeZeilen2()
Dim intRow As Integer
intRow = 5
Do While Left(Worksheets("Tabelle1").Cells(intRow, 2), 2) "KR"
If Worksheets("Tabelle1").Cells(intRow, 3) = "x" And _
Worksheets("Tabelle1").Cells(intRow, 4) = "x" Then
MsgBox "Achtung: Inkonsitente Angaben2! & vbNewLine & vbNewLine" _
& "Fehlermeldung: " & vbNewLine _
& "Unschlüssige Angaben." & vbNewLine & vbNewLine
Exit Do
Else
intRow = intRow + 1
End If
Loop
End Sub