Microsoft Excel

Herbers Excel/VBA-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?

GrußformelHomepage


  

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

.


Beiträge aus den Excel-Beispielen zum Thema "Datum letzte Änderung"