Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA ODER-Abfrage

VBA ODER-Abfrage
Erik
Hallo zusammen,
ich will mit VBA eine doppelte Or-abfrage machen aber es hängt ein wenig. Er soll schauen ob in den Zellen "n.b." steht oder ein Zahlenwert. In zwei Zellen soll er aber wenn eine davon n.b. enthält annehmen das ein Zahlenwert vorliegt.
Das Ziel soll sein, alle Zellen zu prüfen um dann ein Kreuzchen zu setzten bei Vollständig, Unvollständig oder Teilweise. Ich hoffe es ist verständlich.
Meine Idee:
If Sheets("EA").Cells(18, 5).Value = "n.b." And _
Sheets("EA").Cells(19, 5).Value = "n.b." And _
Sheets("EA").Cells(21, 5).Value = "n.b." And _
Sheets("EA").Cells(22, 5).Value = "n.b." And _
Sheets("EA").Cells(23, 5).Value = "n.b." And _
Sheets("EA").Cells(24, 5).Value = "n.b." And _
Sheets("EA").Cells(25, 5).Value = "n.b." Then
Sheets("Übersichtsblatt").Cells(21, 3).Value = "x"
End If
If Sheets("Übersichtsblatt").Cells(21, 3).Value = "" Then
If Sheets("EA").Cells(18, 5).Value = "n.b." Or _
Sheets("EA").Cells(19, 5).Value = "n.b." Or _
Sheets("EA").Cells(21, 5).Value = "n.b." Or _
Sheets("EA").Cells(24, 5).Value = "n.b." Or _
Sheets("EA").Cells(25, 5).Value = "n.b." Or _
Sheets("EA").Cells(22, 5).Value = "n.b." And Sheets("EA").Cells(23, 5).Value = numeric Or _
Sheets("EA").Cells(22, 5).Value = numeric And Sheets("EA").Cells(23, 5).Value = "n.b." Then
Sheets("Übersichtsblatt").Cells(21, 4).Value = "x"
End If
End If
If Sheets("Übersichtsblatt").Cells(21, 3).Value = "" And _
Sheets("Übersichtsblatt").Cells(21, 4).Value = "" Then
Sheets("Übersichtsblatt").Cells(21, 2).Value = "x"
End If
Beim mittleren Teil hängt es. Ohne die zweite Or-abfrage funktioniert alles super. Aber das Kreuzchen soll halt auch bei "Vollständig" gesetzt werden wenn die Zellen 22,5 oder 23,5 nur einen Zahlenwert enthalten sollte.
Danke im Voraus.
Erik

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA ODER-Abfrage
10.05.2012 09:28:34
Sheldon
Hi Erik,
weil es heißen muss If Isnumeric(Sheets("EA").Cells(22, 5).Value = "n.b." And Sheets("EA").Cells(23, 5).Value) Or _
bei = numeric erwartet VBA eine Variable mit diesem Namen, deren Inhalt mit der Zelle abgeglichen wird.
Gruß
Sheldon
Sorry, Fehler, so ists richtig
10.05.2012 09:30:02
Sheldon
Hi nochmals,
es muss natürlich heißen
Sheets("EA").Cells(22, 5).Value = "n.b." And Isnumeric(Sheets("EA").Cells(23, 5).Value) Or _
Gruß
Sheldon
AW: Sorry, Fehler, so ists richtig
10.05.2012 09:52:32
Erik
Hab es so verändert wie du gesagt hast aber jetzt passiert folgendes, wenn eigentlich Vollständig angekreuzt werden soll, kreuzt er bei Unvollständig. Kann man das irgendwie drehen ? ^^
If Sheets("EA").Cells(18, 5).Value = "n.b." And _
Sheets("EA").Cells(19, 5).Value = "n.b." And _
Sheets("EA").Cells(21, 5).Value = "n.b." And _
Sheets("EA").Cells(22, 5).Value = "n.b." And _
Sheets("EA").Cells(23, 5).Value = "n.b." And _
Sheets("EA").Cells(24, 5).Value = "n.b." And _
Sheets("EA").Cells(25, 5).Value = "n.b." Then
Sheets("Übersichtsblatt").Cells(21, 3).Value = "x"
End If
If Sheets("Übersichtsblatt").Cells(21, 3).Value = "" Then
If Sheets("EA").Cells(18, 5).Value = "n.b." Or _
Sheets("EA").Cells(19, 5).Value = "n.b." Or _
Sheets("EA").Cells(21, 5).Value = "n.b." Or _
Sheets("EA").Cells(24, 5).Value = "n.b." Or _
Sheets("EA").Cells(25, 5).Value = "n.b." Or _
Sheets("EA").Cells(22, 5).Value = "n.b." And IsNumeric(Sheets("EA").Cells(23, 5).Value) Or _
IsNumeric(Sheets("EA").Cells(22, 5).Value) And Sheets("EA").Cells(23, 5).Value = "n.b." Then
Sheets("Übersichtsblatt").Cells(21, 4).Value = "x"
End If
End If
If Sheets("Übersichtsblatt").Cells(21, 3).Value = "" And _
Sheets("Übersichtsblatt").Cells(21, 4).Value = "" Then
Sheets("Übersichtsblatt").Cells(21, 2).Value = "x"
End If
Danke dir schon mal für deine Hilfe Sheldon
Anzeige
AW: Sorry, Fehler, so ists richtig
10.05.2012 10:36:17
Sheldon
Hi,
also anhand des Codes kann ich gar nicht erkennen, wo letztlich ein Kreuz gesetzt wird. Aber ich nehme mal an, das wird ein Logik-Problem sein, denn:
die Bedingungen erwarten wg der Or-Anweisungen nur, das irgendwo in 18,5; 19,5; 21,5; 24,5 oder 25,5 ein "n.b." steht. Trifft das zu, wird noch geprüft, ob einer der folgenden Werte numerisch ist und dann in 21,4 ein x eingetragen. Willst du aber in allen genannten Zellen n.b. stehen haben, müsste es ja And heißen und nicht Or.
Gruß
Sheldon
AW: VBA ODER-Abfrage
10.05.2012 09:41:25
Marc
Hallo!
Die Eigenschaft heißt nicht numeric. Du prüfst jetzt auf eine variable namens "numeric" die aber nicht belegt ist.
Die Funktion heißt isnumeric(Sheets("EA").Cells(22, 5)) und ergibt dann false oder true.
An der Wertabfrage könnte man sicher auch noch was besser machen. Für den ersten Teil vielleicht sowas wie zählenwenn ("E18:E25";"n.b.") und für den zweiten Teil eine abfrage auf anzal oder´anzahl2.
Es säh (formatbereinigt) dann so aus:
Sub test()
With Sheets("EA")
If .Cells(18, 5).Value = "n.b." And _
.Cells(19, 5).Value = "n.b." And _
.Cells(21, 5).Value = "n.b." And _
.Cells(22, 5).Value = "n.b." And _
.Cells(23, 5).Value = "n.b." And _
.Cells(24, 5).Value = "n.b." And _
.Cells(25, 5).Value = "n.b." Then
Sheets("Übersichtsblatt").Cells(21, 3).Value = "x"
End If
If Sheets("Übersichtsblatt").Cells(21, 3).Value = "" Then
If .Cells(18, 5).Value = "n.b." Or _
.Cells(19, 5).Value = "n.b." Or _
.Cells(21, 5).Value = "n.b." Or _
.Cells(24, 5).Value = "n.b." Or _
.Cells(25, 5).Value = "n.b." Or _
.Cells(22, 5).Value = "n.b." And IsNumeric(.Cells(23, 5)) Or _
IsNumeric(.Cells(22, 5)) And .Cells(23, 5).Value = "n.b." Then
Sheets("Übersichtsblatt").Cells(21, 4).Value = "x"
End If
End If
End With
With Sheets("Übersichtsblatt")
If .Cells(21, 3).Value = "" And _
.Cells(21, 4).Value = "" Then
.Cells(21, 2).Value = "x"
End If
End With
End Sub
An Werten oder logik hab ich nix geändert!
Gruß, MCO
Anzeige
AW: VBA ODER-Abfrage
10.05.2012 09:59:29
Erik
Hey Marc,
danke für deine Hilfe aber wie ich vorhin geschrieben habe ist es auch mit deiner Schreibweise.
Hast du vielleicht ne Idee wie ich das Problem lösen kann ?
Bei (22,5 und 23,5) steht ein "n.b.", nun soll es eigentlich Unvollständig sein wenn bei den anderen Zellen ein Wert drinne steht. Wenn ich bei einem eine Zahl eintage dann kreuzt er Vollständig an ^^ .. genau falsch.
was ist denn mit Cells(20,5)? owt
10.05.2012 10:47:59
Rudi
AW: was ist denn mit Cells(20,5)? owt
10.05.2012 15:04:30
Erik
Hey Rudi,
die wird net geprüft.
Erik
ganz anderer Ansatz
10.05.2012 16:01:06
Rudi
Hallo,
Sub xxxx()
Dim arr(6), i As Integer
Dim bln3 As Boolean, bln4 As Boolean
With Sheets("EA")
For i = 0 To 1
arr(0) = .Cells(i + 18, 5)
Next
For i = 2 To 6
arr(i) = .Cells(i + 19, 5)
Next
End With
bln3 = True
For i = 0 To 6
bln3 = bln3 And arr(i) = "n.b."
Next
If Not bln3 Then
bln4 = True
For i = 0 To 2
bln4 = bln4 And arr(i) = "n.b."
Next
For i = 3 To 4
bln4 = bln4 And (arr(i) = "n.b." Or IsNumeric(arr(i)))
Next
For i = 5 To 6
bln4 = bln4 And arr(i) = "n.b."
Next
End If
With Sheets("Übersichtsblatt")
.Range(.Cells(21, 2), .Cells(21, 4)) = ""
If Not bln3 And Not bln4 Then .Cells(21, 2) = "x"
If bln3 Then .Cells(21, 3) = "x"
If bln4 Then .Cells(21, 4) = "x"
End With
End Sub

Gruß
Rudi
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige