Registriert seit: 19.04.2016
Version(en): 2010
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
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
19.04.2016, 11:32
(Dieser Beitrag wurde zuletzt bearbeitet: 19.04.2016, 11:34 von Käpt'n Blaubär.)
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
Registriert seit: 19.04.2016
Version(en): 2010
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
Registriert seit: 15.04.2014
Version(en): 2007, 2010, 2019
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)
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
19.04.2016, 14:11
(Dieser Beitrag wurde zuletzt bearbeitet: 19.04.2016, 14:12 von GMG-CC.)
(19.04.2016, 13: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!
Registriert seit: 13.04.2014
Version(en): 365
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.
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
19.04.2016, 15:23
(Dieser Beitrag wurde zuletzt bearbeitet: 19.04.2016, 15:24 von Käpt'n Blaubär.)
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
Registriert seit: 19.04.2016
Version(en): 2010
(19.04.2016, 13: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?
Registriert seit: 19.04.2016
Version(en): 2010
(19.04.2016, 14: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)
Registriert seit: 13.04.2014
Version(en): 365
Hallo, das zweite Makro ist Quatsch! Es gibt nur die eine Möglichkeit mit 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.
|