Registriert seit: 30.06.2015
Version(en): 2010
Hallo Leute, brauch mal eure Hilfe, finde nichts passendes.... Ich habe eine Exceltabelle, welche auf einem NAS gespeichert ist und Lese-und Schreibgeschützt ist. Nun möchte ich, dass ich sehe, wer einen Eintrag hinzufügt. Es gibt aktuell im pronzip 4 Spalten. A=Nummerireung Fortaufend, B=Eingabefeld C=Eingabe durch D=EingabeDatum+Zeit (wird per Marko breits automatisch aufgefüllt
da die Spalte C leider fast immer leer bleibt, hätte ich gerne, dass Excel, sobald eine Engabe in B gemacht wird, automatisch den Namen des aktuellen Nutzers (musst ja jeder beim ersten öffnen von MSO eingeben) reinschreibt.
ist sowas möglich? wenn ja, wie??
vielen Dank
Registriert seit: 10.04.2014
Version(en): Office 2007, 2016, Win 10 64 bit
Hi, ich unterstelle mal das diese Datei in einer Firma genutzt wiird, dann also Mitarbeiterrechte zu beachten sind, da hier eine denkbare unzulässige Kontrolle ausgeübt wird, falls es keine Zustimmung seitens eines Betriebs oder Personalrates gibt. Solche Logdateien sind sicher kein Problem, aber geh doch einfach einen anderen Weg: Speichern nur wenn ein Eintrag erfolgt ist, dabei besteht dann natürlich die Gefahr, das Falscheinträge möglich sind. Könnte man aber auch abfangen, wenn es eben nur den möglichen Eintrag für diesen User gibt, den man auswählen kann. Und der wird eben mit Öffnen der Datei ermittelt und an geeigneter Stelle hinterlegt.
Mit freundlichen Grüßen :) Michael
Registriert seit: 30.06.2015
Version(en): 2010
Hallo, bezüglich "Rechte/Datenschutz" oder wie auch immer, so ist das schon oke =) Unsere Personen sind einfach nur "zu Faul ;)" Die Datei soll eine art "Ticket-System" werden. Somit ist ein Name fast unumgänglich. Und wer nicht reinschreiben will, bekommt keine "Hilfe"
Drum wäre mit der Code sehr recht. Habe schon eine Funktion was mir ein Popup auf dem Feld erzeugt um die Daten zu speichern, überscihtstechnisch ist uns aber lieber alles schöne geordner nebeneinander darzustellen.
Danke für die Hilfe.
LG Tom
Registriert seit: 10.04.2014
Version(en): Office 2007, 2016, Win 10 64 bit
30.06.2015, 12:48
(Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2015, 12:49 von Zwergel.)
Hi Tom, mal als Beispiel: Code: Sub UserName() Range("A1") = Environ("UserName") End Sub
Das ganze eben angepaßt auf den Ort und das Ereignis, das die Eintragung anstößt, z.B. Workbook_Open oder Close, Save oder eben das was paßt. Zu deinem So ist das schon Recht und die sind nur zu faul: Hebelt keine Mitarbeiterrechte aus, also kann mächtig Ärger geben, wenn das nicht erkennbar wird durch den Mitarbeiter, da es ja eine Kontrolle darstellt. Wichtig zu wissen, ob du das trotzdem machst ist ja dein Risiko.
Mit freundlichen Grüßen :) Michael
Registriert seit: 30.06.2015
Version(en): 2010
30.06.2015, 13:29
(Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2015, 17:30 von Rabe.
Bearbeitungsgrund: Zitat umgestellt
)
(30.06.2015, 12:48)Zwergel schrieb: Das ganze eben angepaßt auf den Ort und das Ereignis, das die Eintragung anstößt, z.B. Workbook_Open oder Close, Save oder eben das was paßt.
Zu deinem So ist das schon Recht und die sind nur zu faul: Hebelt keine Mitarbeiterrechte aus, also kann mächtig Ärger geben, wenn das nicht erkennbar wird durch den Mitarbeiter, da es ja eine Kontrolle darstellt. Wichtig zu wissen, ob du das trotzdem machst ist ja dein Risiko. Hallo. Bin irgendwie zu Doof (oder zu Newbee aufm Thema) habe folgenden Code: Code: Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rowUp As Integer, rowDown As Integer, colValue As Integer, colDate As Integer, rngValue As Range
'Nummer der obersten zu überwachende Zeile rowUp = 2 'Nummer der untersten zu überwachende Zeile >>> grosszügig, darf vorläufig tausende von Leerzeilen enthalten rowDown = 10000 'Spaltennummern als A=1, B=2, C=3 usw 'Spaltennummer der zu überwachenden Werte > hier A colValue = 2 'Spaltennummer mit dem Aenderungsdatum > hier B colDate = 5
Set rngValue = Range(Cells(rowUp, colValue), Cells(rowDown, colValue)) If Not Intersect(Target, rngValue) Is Nothing Then Cells(Target.Row, colDate) = Now
End Sub
Private Sub Worksheet_Username(ByVal Target As Range)
Dim rowUp As Integer, rowDown As Integer, colValue As Integer, colDate As Integer, colUn As Integer, rngValue As Range
'Nummer der obersten zu überwachende Zeile rowUp = 2 'Nummer der untersten zu überwachende Zeile >>> grosszügig, darf vorläufig tausende von Leerzeilen enthalten rowDown = 10000 'Spaltennummern als A=1, B=2, C=3 usw 'Spaltennummer der zu überwachenden Werte > hier A colValue = 2 'Spaltennummer mit dem Aenderungsdatum > hier B colUn = 4
Set rngValue = Range(Cells(rowUp, colValue), Cells(rowDown, colValue)) If Not Intersect(Target, rngValue) Is Nothing Then Cells(Target.Row, colUn) = Environ("UserName")
End Sub
Wie muss der Ausschauen dass in der Spalte C (also 3) der User kommt? Dankeeee Lg Tom
Registriert seit: 30.06.2015
Version(en): 2010
kleiner Nachtrag zum obrigen Beitrag, mein Code schaut nun so aus: Code: Option Explicit
Private Sub Worksheet_change(ByVal Target As Range)
Dim rowUp As Integer, rowDown As Integer, colValue As Integer, colDate As Integer, colUser As Integer, rngValue As Range
'Nummer der obersten zu überwachende Zeile rowUp = 2 'Nummer der untersten zu überwachende Zeile >>> grosszügig, darf vorläufig tausende von Leerzeilen enthalten rowDown = 10000 'Spaltennummern als A=1, B=2, C=3 usw 'Spaltennummer der zu überwachenden Werte > hier B colValue = 2 'Spaltennummer mit dem Aenderungsdatum > hier E colDate = 5 ' Spaltenummer mit Username > hier D colUser = 4
Set rngValue = Range(Cells(rowUp, colValue), Cells(rowDown, colValue)) If Not Intersect(Target, rngValue) Is Nothing Then Cells(Target.Row, colDate) = Now & Environ("Username") End Sub
nun kommt mir in der Spalte E Datum, Uhrzeit UND User. Den User möchte ich aber in Spalte D haben, da gibts sicher nur einen Beistrich denn ich nicht finde.... dankeeeee Lg Tom
Registriert seit: 10.04.2014
Version(en): Office 2007, 2016, Win 10 64 bit
Hi Tom, versuchs mal so Code: If Not Intersect(Target, rngValue) Is Nothing Then Cells(Target.Row, colDate) = Now: Cells(Target.Row, 3) = Environ("Username")
Mit freundlichen Grüßen :) Michael
|