Supportnet / Forum / Tabellenkalkulation
Bei Dropdownauswahl Datum einfügen
Frage
Hallo zusammen,
Ich habe ein kleines Problem mit meinem Dropdown-Menü:
In meinem Dropdown-Menü stehen Personennamen. Sobald einer dieser Namen ausgewählt wird, ändert sich durch eine bedingte Formatierung die Farbe der Zeile. Soweit, sogut. Nun will ich aber, dass bei Auswahl das heutige Datum in das Feld daneben eingetragen wird. Nachher berechne ich ob dieses Datum >Heute-4 ist und änder dann wieder die Zellenfarbe.
Habe hierfür nen VBA-Skript gefunden, welches auch theoretisch einwandfrei tut...solange ich nicht mit dem Dropdown arbeite:
Set Target = Application.Intersect(Target, Range("P:P"))
If Not Target Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
Dim rngZelle As Range
For Each rngZelle In Target
With rngZelle
If .Value = "" Then
.Offset(0, -1).ClearContents
Else
.Offset(0, -1).Value = Date
.Offset(0, -1).NumberFormat = "dd.mm.yy"
End If
End With
Next rngZelle
End If
ErrorHandler:
Application.EnableEvents = True
End Sub
Versuche ich das ganze mit den Zellen nebenan, so tut es: ich trage etwas ein, und nebenan erscheint das heutige Datum. Eine Auswahl aus dem Dropdown-Menü wird aber wohl nicht als Dateneingabe angesehen: da passiert rein gar nichts :( Kann mir da jemand helfen? Danke schonmal im Vorraus!
Falls es jemanden interessieren sollte:
Ich entwerfe eine Excel-Tabele für Immobilien. Die Daten werden in die Tabelle eingetragen. Der jeweilige Makler kann aus der Liste sich passende Objekte auswählen und per Dropdown seinen Namen wählen: automatisch wird die gesamte Zeile eingefärbt. Nun soll aber unterbunden werden, dass der Makler dann nichts weiter macht. Wenn also nach 4 Tagen noch nichts in die Aktivitäten-Spalte eingetragen wurde, ändert sich die Zellenformatierung. Ist bei der Akt. etwas eingetragen, soll auch nach 4 Tagen noch die Formatierung beibeahletn werden.
Häte ich anfangs gewusst was für ein Act das ist, hätte ich das wohl gelassen. Aber so kurz vorm Ziel aufgeben ist auch blöd ;)
Antwort 1 von coros
Hi deejay,
mit was für einem DropDownfeld versuchst Du denn die Namen auszuwählen. Mit einem Gültigkeitsfeld, einem Kombinationsfeld aus der Symbolleiste Formular oder einem Kombinationsfeld aus der Symbolleiste Steuerelement-Toolbox? Das müsste man schon wissen.
Ich würde auf jeden Fall mit Gültigkeitsfeldern in Spalte P arbeiten. Dort kannst Du auch Namen auswählen und es wird Dir auch der VBA Code bei einem Worksheet_Change-Ereignis abgearbeitet (ich gehe mal davon aus, dass Du dieses Ereignis nutzt). Wie Du mit Gültigkeitsfeldern arbeitest, findes Du auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 6 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
mit was für einem DropDownfeld versuchst Du denn die Namen auszuwählen. Mit einem Gültigkeitsfeld, einem Kombinationsfeld aus der Symbolleiste Formular oder einem Kombinationsfeld aus der Symbolleiste Steuerelement-Toolbox? Das müsste man schon wissen.
Ich würde auf jeden Fall mit Gültigkeitsfeldern in Spalte P arbeiten. Dort kannst Du auch Namen auswählen und es wird Dir auch der VBA Code bei einem Worksheet_Change-Ereignis abgearbeitet (ich gehe mal davon aus, dass Du dieses Ereignis nutzt). Wie Du mit Gültigkeitsfeldern arbeitest, findes Du auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 6 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von deejay
Hallo Oliver,
Vielen Dank erstmal für Deine Mühe Dir meinen Text durchzulesen :)
Ist eine Gültigkeit: hab die Namen einfach in eine Spalte eingetragen und die dann als Quelle fürs Dropdown genommen.
Mich verwundert halt, dass die Färbung der Zeilen geht durch Auswahl der Namen, das einfügen vom Datum nebenan aber nicht.
Nachfolgend wäre mal mein gesamter VBA-Code...zusammengeflickt aus zig-Support Seiten :)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("P2:P500")
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
With Range(RaZelle.Address, RaZelle.Offset(0, -15).Address)
Select Case UCase(RaZelle.Value)
Case "MUNZ"
.Interior.ColorIndex = 40
Case "ZIEGLER"
.Interior.ColorIndex = 17
Case "SOMMERFELD"
.Interior.ColorIndex = 19
Case Else
.Interior.ColorIndex = xlNone
End Select
End With
End If
Next RaZelle
Set RaBereich = Nothing
Set Target = Application.Intersect(Target, Range("P:P"))
If Not Target Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
Dim rngZelle As Range
For Each rngZelle In Target
With rngZelle
If .Value = "" Then
.Offset(0, -1).ClearContents
Else
.Offset(0, -1).Value = Date
.Offset(0, -1).NumberFormat = "dd.mm.yy"
End If
End With
Next rngZelle
End If
ErrorHandler:
Application.EnableEvents = True
End Sub
Zusätzlich dann in der Tabelle selber eine bedingte Formatierung mit 2 Bedingungen:
1) ="ISTTEXT($N2)"
2) =(HEUTE()-$O2)>4
Vielen Dank erstmal für Deine Mühe Dir meinen Text durchzulesen :)
Ist eine Gültigkeit: hab die Namen einfach in eine Spalte eingetragen und die dann als Quelle fürs Dropdown genommen.
Mich verwundert halt, dass die Färbung der Zeilen geht durch Auswahl der Namen, das einfügen vom Datum nebenan aber nicht.
Nachfolgend wäre mal mein gesamter VBA-Code...zusammengeflickt aus zig-Support Seiten :)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("P2:P500")
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
With Range(RaZelle.Address, RaZelle.Offset(0, -15).Address)
Select Case UCase(RaZelle.Value)
Case "MUNZ"
.Interior.ColorIndex = 40
Case "ZIEGLER"
.Interior.ColorIndex = 17
Case "SOMMERFELD"
.Interior.ColorIndex = 19
Case Else
.Interior.ColorIndex = xlNone
End Select
End With
End If
Next RaZelle
Set RaBereich = Nothing
Set Target = Application.Intersect(Target, Range("P:P"))
If Not Target Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
Dim rngZelle As Range
For Each rngZelle In Target
With rngZelle
If .Value = "" Then
.Offset(0, -1).ClearContents
Else
.Offset(0, -1).Value = Date
.Offset(0, -1).NumberFormat = "dd.mm.yy"
End If
End With
Next rngZelle
End If
ErrorHandler:
Application.EnableEvents = True
End Sub
Zusätzlich dann in der Tabelle selber eine bedingte Formatierung mit 2 Bedingungen:
1) ="ISTTEXT($N2)"
2) =(HEUTE()-$O2)>4
Antwort 3 von coros
Hi deejay,
also wenn ich Deinen Code mal in eine Exceldatei einüge und in Spale P mir Gültigkeitsfelder mit den 3 Namen erstelle, wird mir bei Auswahl eines der Namen die Zeile ab Spalte P bis zur Spalte A eingefärbt un in Spate O in der Zeile, in der ich den Namen ausgewählt habe, wird mir das Datum eingetragen. Also genau so, wie Du es wolltest. Somit ist mit dem VBA Code aus meiner Sicht alles in Ordnung. Der Fehler muss woanders liegen. Aber dazu benötigt man Deine Datei, da kann man nicht so in blaue hinein Lösungsvorschläge geben.
Hast Du den Code mal in eine neue Datei eingefügt und dort mal getestet, sprich so wie ich es jetzt gemacht habe? Probier das mal. Wenn es dort geht, liegt es definitiv an anderer Stelle in Deiner Originaldatei.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
also wenn ich Deinen Code mal in eine Exceldatei einüge und in Spale P mir Gültigkeitsfelder mit den 3 Namen erstelle, wird mir bei Auswahl eines der Namen die Zeile ab Spalte P bis zur Spalte A eingefärbt un in Spate O in der Zeile, in der ich den Namen ausgewählt habe, wird mir das Datum eingetragen. Also genau so, wie Du es wolltest. Somit ist mit dem VBA Code aus meiner Sicht alles in Ordnung. Der Fehler muss woanders liegen. Aber dazu benötigt man Deine Datei, da kann man nicht so in blaue hinein Lösungsvorschläge geben.
Hast Du den Code mal in eine neue Datei eingefügt und dort mal getestet, sprich so wie ich es jetzt gemacht habe? Probier das mal. Wenn es dort geht, liegt es definitiv an anderer Stelle in Deiner Originaldatei.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von deejay
?? das kann doch nicht sein! hab das jetzt gemacht wie du meintest in ein leeres blatt...und genau das geht.
in meiner tabelle aber geht das absolut nicht. einzige unterschied wäre, dass ich da noch die bedingte formatierung habe (die ja wohl kaum eine rolle spielt) und das das ganze eine liste ist.
danke für deine mühe! ich werde jetzt das ganze mal vielleicht komplett neu machen und den code einfügen...mit der hoffnung dass ich durch das viele coden einfach irgendwas verwurschtelt habe in der tabelle. aber wieder typisch...da macht man sich einen kopf warum das nicht geht, und eigentlich tuts :)
in meiner tabelle aber geht das absolut nicht. einzige unterschied wäre, dass ich da noch die bedingte formatierung habe (die ja wohl kaum eine rolle spielt) und das das ganze eine liste ist.
danke für deine mühe! ich werde jetzt das ganze mal vielleicht komplett neu machen und den code einfügen...mit der hoffnung dass ich durch das viele coden einfach irgendwas verwurschtelt habe in der tabelle. aber wieder typisch...da macht man sich einen kopf warum das nicht geht, und eigentlich tuts :)

