Zweite Variante; diese benutzt du auch schon.
Rücke die Codezeilen bitte korrekt ein - das ist zu deinem Besten. Das macht man nicht nur zum Spaß, sondern verschafft Übersicht! Aus dem gleichen Grund schreibt man auch keine zwei Zeilen auf eine Zeile gepresst - gemeint ist Else: Call Prüfung_2.
Bei Operatoren gibt es - wie in der Mathematik - eine Rangfolge. Achte also auf das was du in deinem Ausdrücken meinst und denk über die Klammersetzung nach.
- Beispiel: a Or b And c ist nicht das gleiche wie (a Or b) And c.
Sub Prüfung_1()
With Worksheets("Sheet1")
If .Range("BPK2").Value = "x" Then
For y = .Range("BQC1").Column To .Range("DTL1").Column
If (.Cells(1, y).Value < .Range("KC2").Value _
Or .Cells(1, y).Value > .Range("KD2").Value _
Or .Cells(3, y).Value = 1) _
And .Cells(1, y).Value >= .Range("KC2").Value _
And .Cells(1, y).Value <= .Range("KD2").Value _
Then
.Cells(2, y).Value = 0
Else
.Cells(2, y).Value = 1
End If
Next
.Range("BQA2").Value = WorksheetFunction.Sum(.Range("BQC2:DTL2"))
If .Range("BQA2").Value = 0 Then
Call Ende(3, 10, 13, 14, "BPN2", "BPO2")
Else
Call Prüfung_2
End If
Else
Call Prüfung_2
End If
End With
Gast47848 meinte mit seinem Post, dass du eine Zeile als Fehler genannt hattest, die es in deinem Code gar nicht gibt und somit unklar ist, wovon du redest.
Grüße
|