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

Nach Prüfung der nebenstehenden Zelle MSG erscheinen

Forumthread: Nach Prüfung der nebenstehenden Zelle MSG erscheinen

Nach Prüfung der nebenstehenden Zelle MSG erscheinen
16.01.2025 15:05:55
Andreas Kischkel
Folgendes Szenario möchte ich erstellen: In einer Arbeitszeittabelle/Kalender sollen die Mitarbeiter jeweils ihre Überstunden an dem Tag eintragen. Dazu existiert eine Zelle mit der die Anzahl der Stunden eingetragen wird und zwei Zellen daneben (links) die Begründung als Text. Nun soll geprüft werden, wenn da Stunden eingetragen werden, ob auch ein Text, Begründung angegeben wurde oder umgekehrt. Sollte nur eine der Zwei Zellen befüllt sein soll jeweils eine MSG Box erscheinen. Nur Text in der einen Zelle, MSG Box " Bitte Überstunden eingeben". Ist nur die Zelle mit den Stunden befüllt, dann MSG Box "Bitte Begründung eingeben".
Geht so etwas?? Schon mal vielen Dank für Lösungen :-)

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Prüfung der nebenstehenden Zelle MSG erscheinen
16.01.2025 16:18:22
Yal
wenn in A1 die erste Zeit, A2, die zweite und in A3 die Begründung:
=WENN ( UND ( ODER ( A1 = 0; A2 = 0 ); A3 = ""); "Es fehlt! eine Eingabe!";"")

ach so: Den "Hallo Andreas" am Anfang und "VG Yal" am Ende der Antwort habe ich nur gemäß Vorbild ausgelassen.
AW: Nach Prüfung der nebenstehenden Zelle MSG erscheinen
16.01.2025 19:56:10
Andreas Kischkel
Hallo Yal :-), vielen Dank für die Formel. Diese jetzt noch in einem VBA, dann wäre es gut. So müsste ich ja in jeder der 365 Zellen was eintragen, und die Zelle als Ausgabe nehmen. Es sollte aber eine MSG Box aufgehen wenn die Prüfung ergibt, das etwas fehlt.
Es müsste jedes Mal, wenn in einer der beiden Zellen etwas eingetragen wird geprüft werden, ob in der entsprechenden Referenz Zelle auch etwas eingetragen wurde. Das an allen 365 Tagen, also entsprechend gleich Anzahl von möglichen Prüfungen.
Liebe Grüße, Andreas
Anzeige
AW: Nach Prüfung der nebenstehenden Zelle MSG erscheinen
16.01.2025 20:15:17
Yal
Hallo Andreas,

stell Dich auf eine MsgBox-Orgie ein!

Private Sub Worksheet_Change(ByVal Target As Range)


With Target.EntireRow
Select Case Target.Column
Case 1, 2 ' 1 ist Spalte "A", 2 Spalte "B". Dementpsprechend anpassen
If .Range("C1") = "" Then MsgBox "Bitte Begründung eintragen"
Case 3
If .Range("A1") = "" And Range("B1") = "" Then MsgBox "Bitte eine Zeit eintragen"
End Select
End With
End Sub
Rechtsklicke auf dem Register vom Blatt, wo die Reaktion vorkommen soll und Wähle "Code anzeigen", kopiere den Code dorthin.
Passe die Spalten an, und freue dich auf einem Feuerwerk an lästige Meldungen :-)

Die "A1", "B1" und "C1" beziehen sich auf die aktuelle Zeile (Target.EntireRow) und sind relativ zu interpretieren: es zählt nur die Spalte.

VG
Yal
Anzeige
AW: Nach Prüfung der nebenstehenden Zelle MSG erscheinen
17.01.2025 21:53:53
Waldemar II
Wenn du auf VBA & Box verzichtest, die Formel einfach runterkopierst und bedingte Formatierungen einrichtest, ginge es recht einfach.
AW: Nach Prüfung der nebenstehenden Zelle MSG erscheinen
17.01.2025 11:38:59
Andreas Kischkel
Hallo Yal, Ich habe den Code wie beschrieben in das Arbeitsblatt kopiert, leider keine Aktion??? Ich habs einfach mal in ein leeres Arbeitsblatt probiert um die Funktion zu sehen.
So wie ich den Code verstehe, würde ja jedes mal eine MSG Box erscheinen, wenn ich die leere Zelle anwähle?
Der Plan war, dass nur, wenn eine der beiden Zellen befüllt wird und die andere Leer, die MSG Box erscheint.
Sorry für die Quengelei!!
Gruß, Andreas
Anzeige
AW: Nach Prüfung der nebenstehenden Zelle MSG erscheinen
17.01.2025 12:09:35
Yal
Hallo Andreas,

VBA wird in chinesische Schriftzeichen geschrieben. Man kann es lesen und mit minimale englische Kenntnisse auch verstehen. Bei Bedarf auf einem Begriff klicken und Strg+F1 drücken.

Worksheet_Change ist ein Ereignis, der aufgelöst wird, wenn eine Eingabe in einer Zelle geändert wird (genau gesehen muss der Inhalt nicht geändert werden. Es reicht, wenn die Zelle im Editiermodus geht und zurück).

Um das Ereignis "eine andere Zelle ist angeklickt worden" abzufangen, muss man "Worksheet_SelectionChange" verwenden: positioniere dein Cursor auf dem Code von Worksheet_Change und siehe über den Code-Bereich links "Worksheet" und rechts "SelectionChange". Schaue dir die rechte Liste an. Das sind alle verfügbare Ereignisse.

Target ist die Zelle, die das Ereignis ausgelöst hat.
Target.Column ist die Spalte dieser Zelle.

Mit Select Case Target.Column entscheiden wir die Fälle, bei dem es die Spalte 1, 2, oder 3 betrifft.
Anschliessend wird geprüft, ob in der Zeile der geänderte Zelle (Target.EntireRow) die Werte in Spalte A, B oder C bestimmte Werte haben. Wenn diese Zellen nicht komplett leer sind, treffen die Bedingungen .Range("A1") = "" nicht.

Warum es bei dir nicht funktioniert, ist sicher auf einer lokalen Gegebenheit, die ich aus der Ferne nicht sehen kann. Da musst Du selber ran: setze einen Haltepunkt auf die Zeile "Select Case .." (Zeile anklicken, Menü "Debuggen", "Haltepunkt ein/aus" und mache eine Änderung auf dem Blatt. Wenn der Code gestoppt ist, gehe weiter im Schritten (Taste F8). Öffne dabei die Lokalfenster (Menü "Ansicht", "Lokalfenster"), um den Stand der Variable sehen zu können. Eventuell musst Du in dem Code mehr Variablen einführen, um das Geschehen besser zu beobachten:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Zeile As Long
Dim Spalte As Long
Dim Val As Variant

Zeile = Target.Row
Spalte = Target.Column
With Target.EntireRow
Select Case Target.Column
Case 1, 2 ' 1 ist Spalte "A", 2 Spalte "B". Dementpsprechend anpassen
Val = .Range("C1").Value
If .Range("C1").Value = "" Then MsgBox "Bitte Begründung eintragen"
Case 3
Val = .Range("A1").Value
Val = .Range("B1").Value
If .Range("A1").Value = "" And .Range("B1").Value = "" Then MsgBox "Bitte eine Zeit eintragen"
End Select
End With
End Sub
Ich merke gerade dabei, dass ich bei Range("B1") den Punkt davor vergessen habe, was dazu führt, dass es sich auf die aboslute Adresse B1 des Blattes bezieht, und nicht die relative Adresse, spricht Spalte B der Zeile der geänderte Zelle.

VG
Yal
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