Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

If Schleife mit kombinierten And und Or funktioniert nicht

Forumthread: If Schleife mit kombinierten And und Or funktioniert nicht

If Schleife mit kombinierten And und Or funktioniert nicht
15.07.2025 13:11:43
Andreas
Hallo,
ich brauche heute nochmal Eure Hilfe hoffentlich für Euch in einer einfachen Angelegenheit. Für mich ist es aber zu schwierig und hoffe daher auf Eure Unterstützung.

Ich habe in Spalte 2 meiner Tabelle entweder
- plausible Werte oder
- unplausible Werte
Die unplausiblen Werte können entweder eine "0" oder ganz viele "000000" (6 nullen oder mehr) sein.
Die Werte sind als Text formatiert.

Nun möchte ich eine VBA-Prozedur nur für die plausiblen Werte ausführen.
Daher habe ich folgende IF-Schleife vorangestellt:

If Worksheets("Bericht1").Cells(i, 30).Value = "" And (InStr(1, Worksheets("Bericht1").Cells(i, 2).Value, "000000", vbTextCompare) = 0 Or Worksheets("Bericht1").Cells(i, 2).Value > "0") Then

Leider funktioniert diese Schleife nicht zuverlässsig: Im konkreten Fall werden die Werte mit nur "0" trotzdem berücksichtigt.
Einzeln funktioniert die If-Schleif. d.h.:
If Worksheets("Bericht1").Cells(i, 30).Value = "" And InStr(1, Worksheets("Bericht1").Cells(i, 2).Value, "000000", vbTextCompare) = 0 Then wie auch
If Worksheets("Bericht1").Cells(i, 30).Value = "" And Worksheets("Bericht1").Cells(i, 2).Value > "0" Then

funktionieren.

Kann mir jemand sagen, wo der Fehler liegt?

Vielen Dank schon mal an dieser Stelle.

Andreas
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If Schleife mit kombinierten And und Or funktioniert nicht
15.07.2025 13:57:30
Piet
Hallo

mir fallen spontan zwei Lösungen ein, die ich regelmäßig benutze.
Ich lade mir Daten gerne in eine Txt Variable! Das verkürzt den IF Code!
Wenn And mit OR nicht immer klappt, dann bitte den Or Teil in Klammern setzen!
Ich verwende gerne IF kombiniert mit ElseIf direkt dahinter. If ohne jede Tätigkeit!!

mfg Piet



Sub Vorschlag_mit_Set()
If Worksheets("Bericht1").Cells(i, 30).Value = "" And (InStr(1, Worksheets("Bericht1").Cells(i, 2).Value, "000000", vbTextCompare) = 0 Or Worksheets("Bericht1").Cells(i, 2).Value > "0") Then

Dim B1 As Worksheet, Txt As String
Set B1 = Worksheets("Bericht1")
Txt = B1.Cells(i, 2)

'1. Variante
If B1.Cells(i, 30) = "" And Txt = "0" Or _
InStr(Txt, "000000", vbTextCompare) = 0 Then

'2. Variante mit ElseIf (bei "000000" passieret nichts!
If InStr(Txt, "000000", vbTextCompare) = 0 Then
ElseIf B1.Cells(i, 30) = "" And Txt = "0" Then

End Sub


Sub Vorschlag_mit_With()
Dim Txt As String
If Worksheets("Bericht1").Cells(i, 30).Value = "" And (InStr(1, Worksheets("Bericht1").Cells(i, 2).Value, "000000", vbTextCompare) = 0 Or Worksheets("Bericht1").Cells(i, 2).Value > "0") Then

With Worksheets("Bericht1")
Txt = .Cells(i, 2)

'1. Variante
If .Cells(i, 30) = "" And Txt = "0" Or _
InStr(Txt, "000000", vbTextCompare) = 0 Then

'2. Variante mit ElseIf (bei "000000" passieret nichts!
If InStr(Txt, "000000", vbTextCompare) = 0 Then
ElseIf .Cells(i, 30) = "" And Txt = "0" Then

End With
End Sub
Anzeige
AW: If Schleife mit kombinierten And und Or funktioniert nicht
15.07.2025 13:58:13
Yal
Hallo Andreas,

wenn man die erste Schritten mit der boolschen Algorithmik macht, empfehlt es sich, Variable zu verwenden. Man kann deren Stand im lokalen Fenster sehen (Ansicht, Lokla-Fenster) und leichter mit den "And" und "Or" probieren.

Dim V_leer, V_6null, V_1null


With Worksheets("Bericht1")
V_leer = .Cells(i, 30).Value = ""
V_6null = CBool(InStr(1, .Cells(i, 2).Value, "000000", vbTextCompare) > 0)
V_1null = .Cells(i, 2).Value = "0"
If V_leer And (V_6null Or V_1null) Then 'oder was anderes...
'...
End If
End With


VG
Yal
Anzeige
AW: If Schleife mit kombinierten And und Or funktioniert nicht
15.07.2025 14:19:02
GerdL
Moin Andreas!

Sofern du die Bedingungen nicht staffelst z.B. nur mit "And".

With Worksheets("Bericht1")

If .Cells(i, 30).Value = "" _
And InStr(.Cells(i, 2).Value, "000000", vbTextCompare) = 0 _
And .Cells(i, 2).Value > "0" Then
MsgBox "mach was"
End If
End With


Gruß Gerd
Anzeige
AW: If Schleife mit kombinierten And und Or funktioniert nicht
15.07.2025 14:50:23
daniel
Hi

naja "000000" ist ungleich "0" , deshalb wird ein OR immer TRUE als Ergebnis ausgeben, denn wenn der Text "000000" enthält, dann ist er ungleich 0
die korrekte Verknüpfung wäre hier AND, weil beides gleichzeitig WAHR sein muss.

damit der Code kürzer wird, könntest du dir den Inhalt der Zelle erstmal in eine Variable schreiben:

x = Worksheets("Bericht1").Cells(i, 2).Value

if ... AND (Instr(x, "000000", vbTextcompare) = 0 AND x > "0")


oder du drehst die Abfragelogik um:
x = Worksheets("Bericht1").Cells(i, 2).Value

if ... AND NOT (Instr(x, "000000", vbTextcompare) > 0 OR x = "0")


Gruß Daniel
Anzeige
AW: If Schleife mit kombinierten And und Or funktioniert nicht
15.07.2025 20:44:15
xlKing
Hi,
Ich mache sowas gerne mit Val. Damit wird jeder beliebige Text (ob nun 6 Nullen, 3 Nullen oder "abc") als 0 interpretiert. Das verkürzt enorm.
If Worksheets("Bericht1").Cells(i, 30).Value = "" And Val(Worksheets("Bericht1").Cells(i, 2).Value) > 0 Then

Gruß Mr. K.
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18