Herbers Excel-Forum - das Archiv

Datum letzte Änderung | Herbers Excel-Forum


Betrifft: Datum letzte Änderung
von: Steve

Geschrieben am: 07.01.2010 13:33:08

Hallo Leute,
habe ein weiteres Problem mit meinem Excel-Projekt. Ich habe aus dem Forum ein VBA Skript zum einfügen einer letzten Änderung gefunden:
https://www.herber.de/bbs/user/67037.xlsm
Leider weiß ich nicht wie ich den "Schreibebereich" eingrenzen kann. Derzeit werden die Zeilen E:O überwacht und in P das Datum + der Benutzer geschrieben.
Wie kann man VBA sagen, dass es eigentlich nur im "Tabellenbereich" dies durchführen soll (der Bereich den man "als Tabelle formatieren" anlegt). Denn weder brauche ich die Funktion in den Spaltenüberschriften noch unter der Summenfunktion.
Vielen Dank für eure Hilfe.
P.S. Die Tabelle wird noch länger, d.h. ich kann mich nicht fix auf 10 Zeilen beziehen.

Betrifft: AW: Datum letzte Änderung
von: Tino

Geschrieben am: 07.01.2010 13:45:56
Hallo,
so z. Bsp. der Bereich E2:O11
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Intersect(Range("E2:O11"), Target)
If Not Bereich Is Nothing Then
Application.EnableEvents = False
Cells(Bereich.Row, 16) = Format(Now, "DD.MM.YYYY hh:mm ") & Application.UserName
Application.EnableEvents = True
End If
End Sub
Gruß Tino

Betrifft: oder mit Schleife für alle Zellen im Bereich
von: Tino

Geschrieben am: 07.01.2010 13:47:50
Hallo,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Intersect(Range("E2:O11"), Target)
If Not Bereich Is Nothing Then
Application.EnableEvents = False
For Each Bereich In Bereich
Cells(Bereich.Row, 16) = Format(Now, "DD.MM.YYYY hh:mm ") & Application.UserName
Next Bereich
Application.EnableEvents = True
End If
End Sub
Gruß Tino

Betrifft: AW: oder mit Schleife für alle Zellen im Bereich
von: Steve
Geschrieben am: 07.01.2010 14:23:31
o.k. das funktioniert zwar, aber ich muss in der Range immer den Bereich angeben. Wenn jetzt aber in der Tabelle 10 neue Zeilen hinzukommen, möchte ich nicht jedes mal den Code anpassen müssen.

Betrifft: dann breuchen wir die letzte Zeile
von: Tino

Geschrieben am: 07.01.2010 14:39:56
Hallo,
wir müssen die letzte Zeile bestimmen, im Beispiel anhand der Spalte 1,
da die letzte eine Zusammenfassung ist müssen wir von der letzten noch eins abziehen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Dim LRow As Long
LRow = Cells(Rows.Count, 1).End(xlUp).Row
Set Bereich = Intersect(Range("E2:O" & LRow - 1), Target)
If Not Bereich Is Nothing Then
Application.EnableEvents = False
For Each Bereich In Bereich
Cells(Bereich.Row, 16) = Format(Now, "DD.MM.YYYY hh:mm ") & Application.UserName
Next Bereich
Application.EnableEvents = True
End If
End Sub
Gruß Tino

Betrifft: AW: dann breuchen wir die letzte Zeile
von: Steve

Geschrieben am: 07.01.2010 14:55:33
Genau so habe ich das gebraucht. Du bist der Beste.
P.S. Ich habe es mir jetzt noch ein bisschen angepasst und den Benutzer und die Uhrzeit getrennt:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Dim LRow As Long
LRow = Cells(Rows.Count, 1).End(xlUp).Row
Set Bereich = Intersect(Range("e9:O" & LRow - 1), Target)
If Not Bereich Is Nothing Then
Application.EnableEvents = False
For Each Bereich In Bereich
Cells(Bereich.Row, 16) = Format(Now, "DD.MM.YYYY")
Cells(Bereich.Row, 17) = Format(Now, "hh:mm")
Cells(Bereich.Row, 18) = Application.UserName
Next Bereich
Application.EnableEvents = True
End If
End Sub

Betrifft: AW: dann breuchen wir die letzte Zeile
von: Hajo_Zi
Geschrieben am: 07.01.2010 14:58:46
Hallo Steve,
Dir ist aber bekannt das Du Text in die Zellen schreibst und nicht Datum, Uhrzeit?

Betrifft: AW: dann breuchen wir die letzte Zeile
von: Steve
Geschrieben am: 07.01.2010 15:04:12
Ja, aber ich kann das ja als solches formatieren und ich will es zum Vergleichen und weiterrechnen benutzen und erste Tests haben funktioniert.

Betrifft: schreibe besser...
von: Tino

Geschrieben am: 07.01.2010 15:02:37
Hallo,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Dim LRow As Long
LRow = Cells(Rows.Count, 1).End(xlUp).Row
Set Bereich = Intersect(Range("E2:O" & LRow - 1), Target)
If Not Bereich Is Nothing Then
Application.EnableEvents = False
For Each Bereich In Bereich
Cells(Bereich.Row, 16) = Time
Cells(Bereich.Row, 17) = Date
Cells(Bereich.Row, 18) = Application.UserName
Next Bereich
Application.EnableEvents = True
End If
End Sub
Die Zellen vorher Formatieren für Uhrzeit und Datum
Gruß Tino

Betrifft: AW: schreibe besser...
von: Steve
Geschrieben am: 07.01.2010 15:05:45
o.k. und wie mache ich bei time die 24h Formatierung?

Betrifft: 24:00 Uhr gibt es im eigentlichen Sinne nicht.
von: Tino
Geschrieben am: 07.01.2010 15:13:15
Hallo,
unter Uhrzeit das entsprechende Format auswählen.
Ein Tag geht von 00:00 Uhr und geht bis 23:59 Uhr
Gruß Tino

Betrifft: ich meine die Zellformatierung. ;-) oT.
von: Tino
Geschrieben am: 07.01.2010 15:14:37

Betrifft: hat geklappt - vielen Dank owT
von: Steve
Geschrieben am: 07.01.2010 15:19:03
.

Excel-Beispiele zum Thema "Datum letzte Änderung"
Letzte nichtleere Zelle ermitteln Letzter Wert in Zeile
Letztes Speicherdatum eintragen Letzter Wert aus einem Bereich
Letztes Speicherdatum in die Fußzeile aller Tabellenblätter Formel bis zur letzten Zeile der Nebenspalte kopieren
Letzte Zelle mit Inhalt suchen Letzte Zelle einer Spalte mit Inhalt aus geschlossener Arbeitsmappe
Letzte Verknüpfung in einem Tabellenblatt löschen Letztes Zeichen der Werte einer Zellauswahl hoch-/tiefstellen