Anzeige
Archiv - Navigation
1808to1812
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

Schreiben in Zelle x/y

Schreiben in Zelle x/y
04.02.2021 15:04:22
Pa
Hallo Experten,
ich brauche Eure Hilfe.
Ich habe eine Tabelle, bei der in Spalte A ein Projektname steht und in Spalte B ist ein Auswahlfeld, welches den Status anzeigt. Danach folgen einige weitere Felder, die aber nicht relevant sind.
Um auszuwerten, wie lange ein Projekt in welchem Status hing, trage ich das Änderungsdatum händisch in entsprechende Spalten ein, jeder Status hat dazu eine eigene Spalte, also so:
Zeile1 = Überschriften - folgende Zeilen mit Projektdaten.
Spalten
A=Projektname - B=Status - C bis G=irrelevant - H=Start - I=Qualifizierung - J=Details - K=Umsetzung - L=Abgeschlossen - M=Verloren
Da das manuelle eintragen des Datums aber recht nervig ist und auch mal vergessen wird, würde ich dies gern automatisieren (leider bekomme ich es aber nicht hin).
Wenn ich mich nicht irre gibt es ja die Möglichkeit, dass immer wenn eine Zelle in einer festgelegten Spalte geändert wird, ein Makro gestartet wird.
Das Makro soll dann das aktuelle Datum in die entsprechende Zelle eintragen, also Zeile in der gerade gearbeitet wird, Spalte in der die Überschrift dem neuen Status entspricht.
Zum Beispiel: in der Zeile 5 steht das Projekts 4711, der Status in Spalte B wird von "Start" auf "Qualifizierung" geändert, dann soll in die Zelle (Zeile=5/Spalte=I) das aktuelle Datum eingetragen werden.
Leider habe ich keinen Plan, wie ich das mit der Zelle hinbekomme, also dass diese automatisch ausgewählt wird, indem das Makro die Zeile und die Spalte ermittelt.
Und falls es möglich ist, wäre es zusätzlich noch super, dass wenn man den Status ändert eine Meldung/Abfrage kommt, sofern dort schon ein Datum eingetragen ist.
Also wenn ich z.B. aus versehen von "Qualifizierung" auf "Start" stelle, dann komm eine Abfrage:
"Datum bereits vorhanden, soll das Datum überschrieben werden? JA / NEIN"
Ich hoffe Ihr konntet mir folgen und es gibt einen Weg, dies so umzusetzen.
Vielen Dank im Voraus.
Beste Grüße
Patrick

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Lade mal deine Datei hier hoch. o.w.T.
04.02.2021 15:12:42
Werner
AW: Schreiben in Zelle x/y
04.02.2021 16:02:15
Pa
Hallo Werner,
hier der Link zur Tabelle.
Im Original sind deutlich mehr Daten und dazu noch ein paar Makros zum Filtern und einfügen von Zeilen, aber nichts, was für mein jetziges Problem relevant ist.
https://www.herber.de/bbs/user/143613.xlsx
Gruß
Patrick
AW: Schreiben in Zelle x/y
05.02.2021 12:59:26
Pa
Hallo Herbert,
erstmal vielen Dank für die schnelle Hilfe, leider funktioniert es nicht zu 100%.
Wenn ich z.B. in Projekt D den Artikel abändere, dann trägt er mir dort statt der Artikelnummer das Datum ein.
Und wenn ich eine neue Zeile oben hinzufüge, also in der Testtabelle in Zeile 2 dann das Projekt G steht, dann kann ich den Status dort ändern, ohne das ein Datum geschrieben wird.
Ansonsten hat es mit dem Datum bei den vorhandenen Datensätzen gut funktioniert.
Beste Grüße
Patrick
Anzeige
AW: Schreiben in Zelle x/y
05.02.2021 14:30:48
Yal
Hallo Patrik,
mir scheint die Suche nicht präzise genug zu sein. A1:M1 wäre besser.
Auch eine Fehlertoleranz wäre in Zusammenhang mit EnableEvents nicht verkehrt.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sStatus$, iCol%
On Error GoTo Catch
Try:
sStatus = Target.Value
iCol = Range("A1:M1").Find(What:=sStatus).Column
Application.EnableEvents = False
Cells(Target.Row, iCol).Value = Date
GoTo Finally
Catch:
MsgBox "Begriff """ & sStatus & """ in der Liste nicht gefunden.", vbOKOnly + vbExclamation
Finally:
Application.EnableEvents = True
End Sub
Viel Erfolg
Yal
Anzeige
Code von Herbert angepasst
05.02.2021 14:42:05
Herbert
Hallo,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sStatus As String, raFund As Range
If Target.Column = 2 Then
If Target.Count = 1 Then
sStatus = Target.Value
Set raFund = Rows(1).Find(What:=sStatus, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
Application.EnableEvents = False
Cells(Target.Row, raFund.Column) = Date
Application.EnableEvents = True
Else
MsgBox "Fehler: Eine Spalte " & sStatus & " wurde nicht gefunden."
End If
End If
End If
Set raFund = Nothing
End Sub
Gruß Werner
AW: Schreiben in Zelle x/y
05.02.2021 16:19:32
Herbert_Grom
Hallo Patrick,
sorry, ich hatte vergessen, die Spalte B abzufragen:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sStatus$, iCol%
If Target.Column = 2 And Target.Row > 1 And Target.Value  "" Then
sStatus = Target.Value
iCol = Range("1:10").Find(What:=sStatus).Column
Application.EnableEvents = False
Cells(Target.Row, iCol).Value = Date
Application.EnableEvents = True
End If
End Sub
Servus
Anzeige
AW: Schreiben in Zelle x/y
10.02.2021 15:20:09
Pa
Hallo allen Antwortenden,
und vielen Dank für die Hilfe.
Die Anpassungen von Werner und Yal funktionieren, bei der Anpassung von Herbert kommt beim Einfügen von neuen Zeilen leider weiterhin eine Fehlermeldung (Laufzeitfehler '13': Typen unverträglich).
Ich gehe davon aus, dass wenn ich diese unterdrücken würde, alles läuft wie gewollt, zumindest funktioniert die Tabelle nach dem Auswählen von "Beenden" wie gewollt weiter.
Mein Hauptproblem ist damit gelöst und es macht das Arbeiten um einiges einfacher.
Gibt es für die "Zusatzaufgabe" (mein Wunsch wäre ja eine Message-Box mit Abfrage ob das Datum überschrieben werden soll, wenn in der Zielzelle schon ein Datum enthalten ist) auch einen Ansatz?
Wenn nicht ist es auch nicht tragisch, dann muss man halt beim Umstellen vom Status einfach aufpassen.
Beste Grüße
Patrick
Anzeige
AW: Schreiben in Zelle x/y
10.02.2021 16:57:20
Werner
Hallo,
klar geht das.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sStatus As String, raFund As Range
If Target.Column = 2 Then
If Target.Count = 1 Then
sStatus = Target.Value
Set raFund = Rows(1).Find(What:=sStatus, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
If IsDate(Target.Row, raFund.Column) Then
If MsgBox("Es ist bereits ein Datum erfasst." & vbLf _
& "Soll das Datum überschrieben werden?", vbYesNo, "Hinweis") = vbYes Then
Application.EnableEvents = False
Cells(Target.Row, raFund.Column) = Date
Application.EnableEvents = True
End If
End If
Else
MsgBox "Fehler: Eine Spalte " & sStatus & " wurde nicht gefunden."
End If
End If
End If
Set raFund = Nothing
End Sub
Gruß Werner
Anzeige
AW: Schreiben in Zelle x/y
11.02.2021 11:37:40
Pa
Hallo Werner,
bei mir kommt folgender Fehler:
"Fehler beim Kompilieren: Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft"
Irgendwas scheint bei "IsDate" nicht zu passen, könntest Du nochmal schauen.
Vielen Dank für Deine Hilfe.
Gruß
Patrick
AW: Schreiben in Zelle x/y
12.02.2021 12:09:58
Pa
Hi nochmal,
ich habe den Code etwas angepasst, jetzt läuft alles so wie es soll.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sStatus As String, raFund As Range
If Target.Column = 2 Then
If Target.Count = 1 Then
sStatus = Target.Value
Set raFund = Rows(1).Find(What:=sStatus, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
If IsEmpty(Cells(Target.Row, raFund.Column)) Then
Application.EnableEvents = False
Cells(Target.Row, raFund.Column) = Date
Application.EnableEvents = True
Else
If MsgBox("Es ist bereits ein Datum erfasst." & vbLf _
& "Soll das Datum ?berschrieben werden?", vbYesNo, "Hinweis") = vbYes Then
Application.EnableEvents = False
Cells(Target.Row, raFund.Column) = Date
Application.EnableEvents = True
End If
End If
Else
MsgBox "Fehler: Eine Spalte " & sStatus & " wurde nicht gefunden."
End If
End If
End If
Set raFund = Nothing
End Sub
Vielen Dank nochmals für alle Lösungen und die Mühe
Gruß
Patrick
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige