Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1236to1240
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

VBA - Datum

VBA - Datum
Werner
Hallo Forum,
Für heute benötige ich nochmal eure Hilfe.
In den Feldern F5:DJ67 der Tabelle „Stocktaking“ werden Werte eingegeben. Nun möchte ich, dass in dem Feld D2 immer das Datum incl. Uhrzeit ausgegeben wird, an dem der letzte Eintrag in einem der Felder F5:DJ67 erfolgte.
Das Ganze ist mit VBA zu lösen. Meine VBA-Kenntnisse sind leider sehr bescheiden :-(.
Kann mir jemand helfen?
Danke und Gruß
Werner

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA - Datum
18.11.2011 20:05:59
Hajo_Zi
Hallo Werner,
Option Explicit                             ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                     *
'* 13.10.11                                       *
'* erstellt von HajoZiplies@web.de                *
'* http://Hajo-Excel.de/
Dim RaBereich As Range                  ' Variable Bereich
Dim RaZelle As Range                    ' Variable Zelle
' Bereich der Wirksamkeit
Set RaBereich = Range("F5:DJ67")
' noch mehr Bereiche
'Set RaBereich = Union(Range("A5:A40 , C5:C40 , F5:F40 , J5:J40,  C21:AG21"), _
Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
' nur die Zellen prüfen die im überwachten Bereich liegen
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
' falls nicht gefunden wird Sub verlassen
If Not RaBereich Is Nothing Then
' Reaktion auf Zellveränderung abschalten
Application.EnableEvents = False
' Schleife über die geänderten Zellen des überwachten Bereichs
For Each RaZelle In RaBereich
' Zellinhalt ist numerisch
If IsNumeric(RaZelle) And IsNumeric(RaZelle.Offset(0, 1)) Then
Range("d2") = Date
End If
Next RaZelle
' Reaktion auf Zellveränderung einschalten
Application.EnableEvents = True
End If
Set RaBereich = Nothing                 ' Variable leeren
End Sub

Anzeige
AW: VBA - Datum
18.11.2011 20:29:53
Werner
Das war nun schneller als schnell :-).
Um das mit Hans Rosenthal seinen Worten zu beschreiben...
Das war... SPITZE
Hajo, vielen Dank für die wirklich große Hilfe.
Gruß
Werner
VBA - Datum der Änderung
18.11.2011 21:34:24
Erich
Hi zusammen,
unter Verwendung von Hajos Code - aber etwas kürzer
und m. E. an die Frage angepasster:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range                 ' Variable Bereich
Dim rngC As Range                      ' Variable Zelle
Set RaBereich = Intersect(Target, Range("F5:DJ67"))
If Not RaBereich Is Nothing Then
' Schleife über geänderten Zellen des überwachten Bereichs
For Each rngC In RaBereich
If Not IsEmpty(rngC) Then     ' wenn Zelle nicht leer
Application.EnableEvents = False
Range("D2") = Now          ' mit akt. Uhrzeit
Application.EnableEvents = True
Exit For                   ' fertig und raus!
End If
Next rngC
End If
Set RaBereich = Nothing               ' Variable leeren
End Sub
Statt Date steht hier Now - damit auch die Uhrzeit ausgegeben wird.
Statt "If IsNumeric(RaZelle) And IsNumeric(RaZelle.Offset(0, 1)) Then"
wird hier nur abgefragt: "If Not IsEmpty(rngC) Then".
In der Frage kam wohl nichts mit "nummerisch" vor.
Wenn Datum/Uhrzeit ausgegeben wurden, kann (und sollte!) die Schleife verlassen werden.
Was soll das Abarbeiten der restlichen Zellen noch bringen außer Zeitverlust?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
P.S.: Hajo, das kannst du besser! :-)
Anzeige
AW: VBA - Datum der Änderung
19.11.2011 15:13:28
Werner
Hallo Erich,
Danke für die "schlanke" Version von Hajos Code. Funktioniert 1a.
Gruß und angenehmes Wochenende
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige