Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Automatischer Datumseintrag
#1
Hallo,

ich habe eine Tabelle A1 bis AU5000. Wenn in einer Zeile in dem Bereich Y1 bis AU5000 etwas geändert wird, soll in der entsprechenden Zeile der Spalte A das aktuelle Datum eingetragen werden:

Bsp:

Eintrag in AF734
Automatisch das aktuelle Datum in A734

Ich habe schon folgenden Code mit dem es auch funktioniert:

Allerdings habe ich dann das Problem, dass ich die Eingaben nicht mehr Rückgängig machen kann. Gibt es dafür noch eine andere Lösung?

Viele Grüße

Felix

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Y1:AU5000")) Is Nothing Then
       If Target.Column <> 1 Then
       Cells(Target.Row, 1) = Date
   End If
End If
End Sub
Antworten Top
#2
Hallo Felix,

Zitat:Ich habe schon folgenden Code mit dem es auch funktioniert:
Allerdings habe ich dann das Problem, dass ich die Eingaben nicht mehr Rückgängig machen kann. Gibt es dafür noch eine andere Lösung?

In VBA gibt es wirklich kein "zurück", es sei denn, man programmiert das.

1. Änderungen aufzeichnen
2. Bei Bedarf "zurückholen" , sonst verwerfen
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#3
hhhmmm. ok. Danke.

Ich bin aber leider ein völliger VBA Neuling und froh, dass ich diesen Code gefunden und hinbekommen habe.... Hast du dafür denn zufällig eine Lösung parat?


Eine weitere Verbesserung wäre, wenn man den Namen des WindowsUsers in die Spalte B hinzufügen könnte.

Habe das mal so probiert, erhalte aber immer Fehlermeldungen. Muss ich denn dabei noch irgendwelche Variablen ändern? Bzw. stimmt das "= User" überhaupt?

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Y1:AU5000")) Is Nothing Then
       If Target.Column <> 2 Then
       Cells(Target.Row, 2) = User
    End If
End If
End Sub
Antworten Top
#4
heje excelfreunde,

vielleicht ist die zeile  "Cells(Target.Row, 1) = Date" durch "Cells(Target.Row, 1).value = Date" zu ersetzen...
Vielen Dank
--Janosch
                                                     
Excel  2019 (64bit)  Win 10 Pro (64bit)                              
Antworten Top
#5
(19.04.2016, 12:19)FelixWeb schrieb: Ich bin aber leider ein völliger VBA Neuling und froh, dass ich diesen Code gefunden und hinbekommen habe.... Hast du dafür denn zufällig eine Lösung parat?

Moin, schau einfach einmal hier nach, da steht so einiges zu diesem Thema drin.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#6
Hallo,


es wäre interessant zu wissen, welche Fehlermeldung Du erhältst. Das Einzige was mir auffällt, ist diese Zeile:


Code:
Cells(Target.Row, 2) = User


Der Rest wäre syntaktisch in Ordnung.

Ist User irgendwo als Variable festgelegt? Offensichtlich nicht!

Ungetestet würde ich das empfehlen:


Code:
Cells(Target.Row, 2) = vba.environ("Username")

Es macht aber keinen Sinn, abzufragen, ob target.column <>2  ist, da der Bereich, in dem Target liegen darf, von Spalte 25 bis 51 geht!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#7
Hallo,

Ups, hier ist ja inzwischen mächtig Autobahn gewesen.  :19:

Sorry, ich hatte einen Termin, drum erst jetzt ...

Zitat:Sub Username_Windows()
'Anmeldename unter Windows
  MsgBox Environ("Username")
End Sub

Sub Benutzername_Excel()
'Anmeldename unter Excel
  MsgBox Application.Username
End Sub

Wenn Du die MsgBoxen wegmachst, dann bleibt der Rest der Codezeile für Dein Makro übrig

1. Environ("Username") ... für Windows
2. Application.Username .. für Excel
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#8
(19.04.2016, 12:39)radagast schrieb: heje excelfreunde,

vielleicht ist die zeile  "Cells(Target.Row, 1) = Date" durch "Cells(Target.Row, 1).value = Date" zu ersetzen...

Hallo Janosch,

soll das mein Problem mit dem Rückgängig lösen?

Cells(Target.Row, 1) = Date funktioniert ja schon. Wo ist den mit dem .value der Unterschied?
Antworten Top
#9
(19.04.2016, 13:31)BoskoBiati schrieb:
Code:
Cells(Target.Row, 2) = vba.environ("Username")

Es macht aber keinen Sinn, abzufragen, ob target.column <>2  ist, da der Bereich, in dem Target liegen darf, von Spalte 25 bis 51 geht!

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Y1:AU5000")) Is Nothing Then
       If Target.Column <> 1 Then
       Cells(Target.Row, 1).Value = Date
   End If
End If
End Sub


Private Sub Worksheet_Change2(ByVal Target As Range)
If Not Intersect(Target, Range("Y1:AU5000")) Is Nothing Then
           Cells(Target.Row, 2).Value = VBA.Environ("Username")
End If
End Sub

Habe das jetzt so gemacht, aber es passiert nichts (auch keine Fehlermeldung)
Antworten Top
#10
Hallo,

das zweite Makro ist Quatsch! Es gibt nur die eine Möglichkeit mit 
Code:
Worksheet_Change(



Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Y1:AU5000")) Is Nothing Then
       Cells(Target.Row, 1) = Date
               Cells(Target.Row, 2) = VBA.Environ("Username")
End If
End Sub

Das .Value kannst Du getrost weglassen, das braucht man nur selten!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste