Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

Excel VBA: Auswahl aus Gültikkeitsliste verbieten wenn...
#1
Hallo zusammen,

vielleicht könnte Ihr mir wieder mal auf die Sprünge helfen.

Ich möchte in dieser Tabelle die Auswahl "closed" aus der Gültigkeitsliste in Zellen der Spalte "E" so lange verhindern, solange die Werte in den Zellen der Spalten  A & B nicht identisch sind und daraus resultierend der Wert in Spalte "C" nicht auf "Null" steht. Gleichzeitig soll eine Meldung (Eintrag in Spalte "C" unvollständig) hochpoppen die darauf hinweist dass der Wert in der Zelle in Spalte "B" fehlt oder noch nicht korrekt ist.


Tabelle3
ABCDE
1volumepartial deliveryopenLieferdatumStatus
21118.01.2016closed
32219.01.2016closed
43320.01.2016closed
54421.01.2016open
65522.01.2016open
76623.01.2016cancel
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.08 einschl. 64 Bit

Mit freundlichen Grüßen / Best regards
                           //
----------o00o---°(_)°---o00o----------------------

Erich
to top
#2
In E2


PHP-Code:
=If(A2=B2;"closed";"open"
to top
#3
Hallo,

in E2 ist eine Gültigkeitsliste hinterlegt....!? Da kann ich doch keine Formel eintragen....wenn ich mich nicht irre?
Mit freundlichen Grüßen / Best regards
                           //
----------o00o---°(_)°---o00o----------------------

Erich
to top
#4
Hier brauchst du doch gar kein Gültigkeitsliste ?
to top
#5
Das ist mir schon klar. Leider muss die Gültigkeitsliste aber unangetastet bleiben.
Die Zeilen werden auch noch in Abhängigkeit der Gültigkeitsliste durch eine Bedingte Formatierung eingefärbt.

Deshalb wäre mir eine VBA-Lösung wichtig.

Trotzdem vielen Dank!
Mit freundlichen Grüßen / Best regards
                           //
----------o00o---°(_)°---o00o----------------------

Erich
to top
#6
Hallo,

man könnte dann das Auswählen der Zelle verhindern:


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Column = 5 And Target.Row > 1 Then
   If Target.Offset(, -4) <> Target.Offset(, -3) Then
     MsgBox "Splate B nicht korrekt!"
     Application.EnableEvents = False
     Target.Offset(, -3).Select
     Application.EnableEvents = True
   End If
 End If
End Sub
Gruß Atilla
[-] Folgende(r) 1 Benutzer sagt Danke an atilla für diesen Beitrag:
  • sharky51
to top
#7
Zitat:Die Zeilen werden auch noch in Abhängigkeit der Gültigkeitsliste durch eine Bedingte Formatierung eingefärbt.
Dass stimmt nicht.

Zitat:Deshalb wäre mir eine VBA-Lösung wichtig.
Bedingte Formatierung hat nichts mit VBA zu tun, weder VBA mit Gültigkeitsliste.
to top
#8
Hallo attila,

das ist schon mal nicht schlecht.

Mann soll aber die Zelle in Spalte 5 aber schon anwählen können, egal ob die Werte in den vorherigen Zellinhalte, ungleich oder gleich sind.
Nur wenn keine Übereinstimmung herrscht und "closed" ausgewählt werden soll, darf "closed" nicht gesetzt werden und es soll gemeckert werden.
Mit freundlichen Grüßen / Best regards
                           //
----------o00o---°(_)°---o00o----------------------

Erich
to top
#9
(13.02.2016, 16:18)snb schrieb:
Zitat:Die Zeilen werden auch noch in Abhängigkeit der Gültigkeitsliste durch eine Bedingte Formatierung eingefärbt.
Dass stimmt nicht.

Zitat:Deshalb wäre mir eine VBA-Lösung wichtig.
Bedingte Formatierung hat nichts mit VBA zu tun, weder VBA mit Gültigkeitsliste.

Sorry, ja das weiß ich....eine längere Beschreibung warum, wieso, weshalb ich eine VBA-Lösung bevorzuge würde den Rahmen sprengen.
Trotzdem vielen Dank für Deine kurze und knackige Lösung! Werde sicher mal auf sie zurückgreifen.
Mit freundlichen Grüßen / Best regards
                           //
----------o00o---°(_)°---o00o----------------------

Erich
to top
#10
Hallo,

dann das Change Ereignis so:



Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 And Target.Row > 1 Then
   If Target.Offset(, -4) <> Target.Offset(, -3) Then
     If Target.Text = "closed" Then
       MsgBox "Splate B nicht korrekt!"
       Application.EnableEvents = False
       Application.Undo
       Application.EnableEvents = True
     End If
   End If
 End If
End Sub
Gruß Atilla
[-] Folgende(r) 1 Benutzer sagt Danke an atilla für diesen Beitrag:
  • sharky51
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste