donnerkai
Goto Top

Wenn Dann Funktion in Excel

Hallo und guten Morgen,

ich habe keinerlei Excel Erfahrung, das mal vorweg.
Nun habe ich eine Zelle so formatiert, dass sie eine Dropdown Auwahl enthält. Das funktioniert auch.
Nun würde ich gerne eine Wenn Dann Funktion ergänzen.

Sinn und Zweck: Die Liste steht mehreren Usern zur Verfügung. Wenn ein User den Wert der Zelle von
"offen" auf "in Bearbeitung" oder "Zurückgestellt" ändert, soll automatisch das aktuelle Datum in ein Nachbarfeld gesetzt werden.

also quasi. wenn Zellenwert ungleich "offen" dann setze aktuelles Datum in Nachbarfeld.

Kann ich das mit Excel irgendwie realisieren?

Vielen Dank

Content-ID: 185482

Url: https://administrator.de/forum/wenn-dann-funktion-in-excel-185482.html

Ausgedruckt am: 23.12.2024 um 12:12 Uhr

mak-xxl
mak-xxl 25.05.2012 aktualisiert um 11:08:07 Uhr
Goto Top
Moin donnerkai,

wenn die Worte so in der Zelle stehen (i.e. 'A1'), dann kommt in Zelle 'B1':

=WENN(UND($A1<>"offen";$A1<>"");HEUTE();"")

Zellen bzw. Spalte 'B' als Datum formatieren.
ABER: Das Datum wird bei jedem späteren Öffnen der Mappe aktualisiert! Sollte das von Bedeutung sein, kann man per VBA (gekoppelt an DropDown) den Datumswert eintragen lassen ...

Freundliche Grüße von der Insel - Mario
donnerkai
donnerkai 25.05.2012 um 11:16:34 Uhr
Goto Top
Ok, dann bringt mir das natürlich nichts. Dann müsste ich die VBA Variante nehmen.
Ich habe auch dafür schon einen Code gefunden:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim RaBereich As Range
' abbrechen, wenn erste Zeile oder mehr als eine Zelle aktiv
If Target.Row < 2 Or Target.Count > 1 Then Exit Sub

'für Änderungen in E2 bis E50. Ggf anpassen
Set RaBereich = Range("E2:E50")
Application.EnableEvents = False

'bei Änderung eine Zelle rechts davon Datum und Uhrzeit eintragen
If Not Intersect(Target, RaBereich) Is Nothing Then
Target.Offset(0, +1) = Format(Now, "dd.mm.yyyy_hh:mm:ss")
End If

Application.EnableEvents = True
Set RaBereich = Nothing

End Sub


Funktioniert leider nicht.
ich habe den Code aus einem anderen Forum, wo die User allerdings schreiben, dass es funktioniert.

Mache ich Fehler beim Ablauf? Ich mache einen Rechtsklick auf die Tabelle und gehe auf Code anzeigen. Dann kopiere ich den oben stehenden Code und speichere.
Wenn ich nun die Werte in bsp: e30 verändere passiert mal gar nix.
Oder muss ich noch irgendeinen Zwischenschritt machen?
mak-xxl
mak-xxl 25.05.2012 aktualisiert um 11:36:43 Uhr
Goto Top
Moin donnerkai,

eher so:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Row < 2 Or Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    If Not Intersect(Target, Range("E2:E50")) Is Nothing Then  
        If Target.Text = "Zurückgestellt" Or Target.Text = "in Bearbeitung" Then  
            Target.Offset(0, 1) = Format(Now, "dd.mm.yyyy")  
        Else
            Target.Offset(0, 1) = Empty
        End If
    End If
    Application.EnableEvents = True
End Sub

Den Bereich in Zeile 4 evtl. anpassen.

Freundliche Grüße von der Insel - Mario
bastla
bastla 25.05.2012 um 11:48:34 Uhr
Goto Top
... und vielleicht auch noch berücksichtigen, dass die Einträge wie "in Bearbeitung" hinsichtlich der Groß-/Kleinschreibung exakt ausgewertet werden - daher etwas benutzerfreundlicher:
If LCase(Target.Text) = "zurückgestellt" Or LCase(Target.Text) = "in bearbeitung" Then
Grüße
bastla
donnerkai
donnerkai 25.05.2012 um 11:52:47 Uhr
Goto Top
Auch hierbei kein Ergebnis wenn ich den Code einbinde.
Ich verändere die Zelle A30 und es passiert nichts!
bastla
bastla 25.05.2012 aktualisiert um 12:00:18 Uhr
Goto Top
Hallo donnerkai!

Nur zur Sicherheit: Den Code hast Du hoffentlich nicht in ein Modul eingefügt, sondern der Tabelle zugeordnet (am einfachsten per Rechtsklick auf das Registerblatt der Tabelle und "Code anzeigen")?

Ansonsten siehe noch meine Anmerkung oberhalb ...

[Edit] ... und wenn Du tatsächlich die Zelle A30 änderst, wird auch nix passieren (überwacht werden E2:E50). [/Edit]

Grüße
bastla
mak-xxl
mak-xxl 25.05.2012 aktualisiert um 12:00:09 Uhr
Goto Top
Moin donnerkai,

es passiert nur etwas, wenn Du die Zellen im Bereich 'E2' bis 'E50' veränderst, wenn andere Zellen benutzt werde, musst Du in Zeile 4 des Codes selbiges anpassen.

Um zu prüfen, ob der Code überhaupt ausgeführt wird, schreibst Du als Zeile 2

MsgBox Target.Address

Es wird dann jedesmal angezeigt, in welcher Zelle etwas geändert wurde - diese Code-Zeile später wieder löschen.

Freundliche Grüße von der Insel - Mario
donnerkai
donnerkai 25.05.2012 um 13:47:17 Uhr
Goto Top
Hab ich natürlich vorher geändert. Geht aber trotzdem nicht.
donnerkai
donnerkai 25.05.2012 um 15:32:06 Uhr
Goto Top
Einmal geschlossen und wieder geöffnet und schon gehts.