Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prüft nur 2 von 3 Pflichtfeldern

Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 09:18:30
3
Guten Morgen ihr Lieben,
ich habe ein kleines Problem mit meinen Pflichtfeldern.
Die Prüfung bezieht sich immer auf eine Zeile.
Wenn bestimmte Zellen "" sind, müssen 3 definierte Zellen befüllt sein.
Die ersten beiden Zellen prüft er auch ganz normal und wirft die MsgBox aus.
Die 3. Zelle wird auch geprüft, nur das hier keine MsgBox kommt.
Zudem wäre es toll wenn mir jemand eine Möglichkeit aufzeigt die "fehlerhaften" Zellen farblich zu markieren und als aktiv zu setzen.
Vielen Dank im Voraus.
Grüße
Chris
https://www.herber.de/bbs/user/142151.xlsm
Hier einmal der Code:
Dim wksImp As Worksheet
Dim ir As Integer 'Zähler für die Zeilen Tabelle Import
Dim iz As Integer 'Zähler für den Eintrag der Daten
Sub Pflichtfelder() Dim Bereich As Range Set wksImp = Worksheets("Import") ir = 3 Do While wksImp.Cells(ir, 1).Value "" Set Bereich = wksImp.Range(Cells(ir, 3), Cells(ir, 12)) If wksImp.Cells(ir, 2).Value = "" Or wksImp.Cells(ir, 4).Value = "" Or wksImp.Cells(ir, _ 7).Value = "" And _ Application.Count(Bereich.Value2) = 1 Then MsgBox ("Achtung!" & vbCrLf & "In Zeile " & ir & " fehlt der Name!"), vbCritical wksImp.Cells(ir, 2).Select End End If ir = ir + 1 Loop ir = 3 End Sub

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 10:33:19
3
Hallo Chris,
Zelle 3 wird im Zusammenhang mit Application.Count(Bereich.Value2) mit dem Operator And geprüft.
And bindet stärker als or, das heißt, du musst klammern.
wksImp.Cells(ir, 7).Value = "" And Application.Count(Bereich.Value2) = 1
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 13:12:02
3
Hallo worti,
danke für deine Rückmeldung.
Also das mit dem klammern habe ich noch nicht ganz verstanden.
Wenn ich hier
wksImp.Cells(ir, 2).Value = "" Or wksImp.Cells(ir, 4).Value = "" Or wksImp.Cells(ir, _
7).Value = ""

eine Klammer drum setze passiert nichts mehr. Auch keine Fehlermeldung.
Der Code hier im Beitrag scheint verrutscht zu sein und spiegelt nicht 100% den Code in der Datei wieder.
And stärker als or, okay. Aber die 2. Zelle die geprüft wird, befindet sich ebenfalls in dem Bereich von Application.Count(Bereich.Value2) und wird korrekt ausgewertet.
Ich habe aber bereits einen weiteren Lösungsvorschlag erhalten der wunderbar funktioniert. Demnach könnten wir das auch beenden.
Du darfst mir dazu aber natürlich gerne noch eine Antwort zukommen lassen, damit ich noch was lernen kann.
Grüße
Anzeige
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 10:51:50
3
Moin
beim Stöbern durch den Code sind mir diverse Dinge aufgefallen. Aber das hier hätte ich gern mal erklärt.
du ermittelst die letzte Zeile aus Spalte 10 und nimmst den Wert für Spalte "B"
dann ermittelst du die letzte Zeile aus Spalte "B" und packst sie an den Bereich von Spalte "J"
der Doppelvergleich ist mir auch ein Rätsel. Bitte erhelle mich.

AnzN = WorksheetFunction.CountA(wks.Range("B3:B" & Cells(Rows.Count, 10).End(xlUp).Row))
AnzE = WorksheetFunction.CountA(wks.Range("J3:J" & Cells(Rows.Count, 2).End(xlUp).Row))
If AnzN = AnzE Or AnzE = AnzN Then

Und dann solltest du dir einen Gefallen tun und gleiche Funktionen nicht mehrmals schreiben.
z.B Sub Importdaten_Gummersbach() gib der Funktion das Tabellenblatt mit
Sub Importdaten_xxxxxxxx(wks as String) als Text oder als Objekt.
Du sparst dir später ne Menge Arbeit.
Hintergründe von Zellen einfärben ist kein großes Ding und kann sehr einfach recherchiert werden.
Gruß
RB
Anzeige
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 13:19:01
3
Hallo ralf_b.
danke für deine Rückmeldung.
VBA ist noch immer Neuland für mich und dann kommt sowas schonmal zu stande ;)
Die Funktion hatte nicht so richtig Funktioniert und findet aktuelle auch keine Anwendung.
Hintergrund sollte eine überprüfung der Zellinhalte von einer Zeile aus B und J sein, da diese entweder beide Leer oder NichtLeer sein dürfen.
Ich sollte den Code einfach entfernen.
Und dann solltest du dir einen Gefallen tun und gleiche Funktionen nicht mehrmals schreiben.
z.B Sub Importdaten_Gummersbach() gib der Funktion das Tabellenblatt mit
Sub Importdaten_xxxxxxxx(wks as String) als Text oder als Objekt.

Könntest du mir das einmal anhand eines Beispiels erklären?
Gerade bei änderungen ist es ja wirklich unschön wenn man dann mehrere "gleiche" Funktionen bearbeiten muss.
Grüße
Chris
Anzeige
AW: Prüft nur 2 von 3 Pflichtfeldern
09.12.2020 12:51:15
3
Hallo ralf_b,
ich danke dir ganz herzlich.
Das erleichtert die Anpassung/Bearbeitung ja erheblich und ist im Grunde so simpel.
Man muss nur wissen was man tut ;)
Grüße
Chris
danke für die Rückmeldung owt
09.12.2020 13:17:02
ralf_b
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 10:58:27
3
Hallo,
ganz andere Version:
Sub Pflichtfelder()
Dim raBereich As Range, raPrüfung As Range, raZelle As Range
ir = 3
With Worksheets("Import")
Do While .Cells(ir, 1)  ""
Set raBereich = .Range(.Cells(ir, 2), .Cells(ir, 12))
Set raPrüfung = Union(.Cells(ir, 2), .Cells(ir, 4), .Cells(ir, 7))
If WorksheetFunction.CountBlank(raBereich) 
Gruß Werner
Anzeige
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 13:27:26
3
Hallo Werner,
vielen Dank für deine Rückmeldung.
Deine Version funktioniert wunderbar
Magst du mir kurz erläutern wofür dieser Zusatz ist?
Set raBereich = Nothing: Set raPrüfung = Nothing
Setzt der diese Variablen quasi wieder auf Leer, so dass ich damit erneut eine Abfrage starten könnte?
Grüße
Chris
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 13:30:29
3
Hallo,
eigentlich werden die Range-Variablen am Ende des Codes wieder zurück gesetzt, ist nur zur Sicherheit.
Gruß Werner
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 13:34:20
3
Hallo Werner,
okay danke.
Werde ich mir merken.
Grüße
Chris
Gerne u. Danke für die Rückmeldung. o.w.T.
08.12.2020 13:36:43
Werner
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 11:01:20
3
Moin Chris
So ganz erschließt sich mir dein Application.Count nicht, bzw. wofür du den brauchst.
Ich sehe folgendes:
Du prüfst 3 Zellen folgendermaßen: (bezogen aif Zeile 3)
Wenn Zelle B3 ist leer, dann msgbox
ODER
Wenn Zelle D3 ist leer, dann msgbox
ODER
Wenn Zelle G3 ist leer UND im Bereich C3 bis L3 befindet sich eine Zahl, dann msgbox
Heißt, Cells(ir, 3) und Cells(ir, 4) werden geprüft, ob leer.
Cells(ir, 7) wird nur geprüft, wenn sich in Bereich genau eine Zahl befindet.
Ist das nicht der Fall, wird die Prüfung übersprungen.
Das farbliche Markieren kann man über Makro machen, allerdings müsste man die Färbung später wieder manuell entfernen.
ich würde deshalb eher eine bedingte Formatierung bevorzugen.
Die müsste abfragen, ob Zelle in Spalte A "" und eigene Zelle leer ist. Wenn ja, dann färben.
Ich hoffe, das hilft dir weiter.
Gruß
Edmund
Anzeige
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 13:33:05
3
Hallo Edmund,
vielen Dank für deine Rückmeldung.
Na jetzt weiß ich immerhin wieso er die letzte Abfrage nicht als Falsch ausgibt ;)
Die Cells 2, 4 und 7 sollten geprüft werden wenn der Bereich NichtLeer ist.
Sprich die Zellen 2, 4 und 7 müssen einen Wert haben, wenn die anderen Zellen in dem Bereich NichtLeer sind.
Wegen dem Färben habe ich auch noch weiter recherchiert...tue mich aber blöderweise echt schwer mit der Formel dafür.
Werde das über eine Bedingte Formatierung abbilden.
Grüße
Chris
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 14:25:10
3
Hallo Chris
OK, verstanden.
Das Problem: Dein Application.Count guckt nur nach, ob Zahlen vorhanden sind. Und das = 1 am Ende heißt, wenn zwei Treffer gelandet werden, wird der Befehl auch nicht ausgeführt.
Prinzipiell sollte deine Zeile also heißen:
If Application.CountA(Bereich) > 0 Then
Dann sollte die entweder am Anfang stehen, oder das AND muss hinter jedes OR.
Mit Klammer arbeiten sollte auch funktionieren.
Das birgt aber wieder ein Problem.
Sollen deine Pflichtfelder in dem Fall mitgezählt werden?
Dann könnte der Code versucht sein zu sagen: OK, in Name steht was drin, also überprüfen, auch wenn der Rest leer ist.
Ist das so gewollt?
Ich guck mal, dass ich was zusammenbastel, auch mit der bedingten Formatierung.
Viele Grüße
Edmund
Anzeige
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 14:49:40
3
Schau mal, ob das so passt
Gefärbt wird jetzt auch.
https://www.herber.de/bbs/user/142160.xlsm
Mich persönlich würde noch stören, dass durch die OR Verknüpfung jetzt zwar alls Zellen geprüft werden, aber jedesmal die gleiche Nachricht kommt, dass der Name fehlt, auch wenn es der Geburtstag ist :)
Aber das kann man ja noch anpassen.
Weiter werden, wie von dir vorgegeben nur die Zellen ab Spalte C auf Inhalt überprüft, ebenso wie die beiden darin befindlichen Pflichtfelder.
Viele Grüße
Edmund
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 15:19:40
3
Hallo Edmund,
ich bin wirklich begeistert wie schnell einem hier geholfen wird.
Es ist super das mein "spartanischer" Code auch funktionieren kann.
Ich habe ja bereits ein anderen Lösungsvorschlag hier im Forum erhalten, der Löst das Problem mit dem "Namen" auch direkt und kann noch variabler genutzt werden.
Mit der bedingten Formatierung habe ich einfach zu umständlich gedacht. Es reicht natürlich aus nur mit der Spalte A zu vergleichen...Ich hatte vergeblich versucht alle Zellen in einer Reihe zu vergleichen mit Leer und NichtLeer.
Danke und Grüße!
Chris
Anzeige
AW: Prüft nur 2 von 3 Pflichtfeldern
08.12.2020 15:46:35
3
Hallo Chris
Ups, das habe ich gar nicht bemerkt, dass da schon ein anderer Code kam. Nun ja, nur zur Übung.
Danke für die Rückmeldung
Gruß
Edmund

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige