Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
156to160
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
156to160
156to160
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Benutzeränderung (wer war es)

Benutzeränderung (wer war es)
13.09.2002 20:51:47
Peter
Hallo,

Diesen Makro bekam ich gestern Nacht.
Er funktioniert leider nicht so ganz - die Spalte D Alter Wert "OldValue" zeigt mir keinen Wert an, die Zelle bleibt immer leer.

Wer weiß wo der Fehler liegt ?!?!

*****************************************************************

Hallo Peter,
erstelle in deiner Arbeitsmappe eine Tabelle mit dem Namen "Protokoll" und füge im VB-Editor diesen Code in die Tabelle ein, die du überwachen willst:


Public OldValue
Private Sub Worksheet_Change(ByVal Target As Range)
'Spalte A = Datum
'Spalte B = Zeit
'Spalte C = ZellAdresse
'Spalte D = AlterWert
'Spalte E = Neuer Wert
'Spalte F = User
Dim Cr As Long
Cr = 65536
If Target.Value <> OldValue Then
If Worksheets("Protokoll").Cells(Cr, 1) = "" Then
Cr = Worksheets("Protokoll").Cells(Cr, 1).End(xlUp).Row + 1
End If
Worksheets("Protokoll").Cells(Cr, 1) = Format(Now(), "dd.mm.yyyy")
Worksheets("Protokoll").Cells(Cr, 2) = Format(Now(), "hh:mm")
Worksheets("Protokoll").Cells(Cr, 3) = Target.Address
Worksheets("Protokoll").Cells(Cr, 4) = OldValue
Worksheets("Protokoll").Cells(Cr, 5) = Target.Value
Worksheets("Protokoll").Cells(Cr, 6) = Right(Environ(24), Len(Environ(24)) - InStr(1, Environ(24), "="))
End If
End Sub

****************************************************************

Gruß Peter

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Benutzeränderung (wer war es)
13.09.2002 21:11:37
PeterW
Hallo Peter,

wenn man Deine Fragestellung wüßte könnte man mehr zum Code sagen - bleibe also bitte im angefangenen Thread.
Du hast nicht etwa den Code nicht in ein Modul statt in das Klassenmodul der zu überwachenden Tabelle kopiert?

Gruß
Peter

Re: Benutzeränderung (wer war es)
13.09.2002 21:17:47
Axel
Hallo,

Ähm, wo wird den OldValue überhaupt ein Wert zugewiesen?

Und was soll die Anweisung Environ(24)?

Damit kann man normalerweise eine Umgebungsvariable auslesen, wie z.B. in Environ("PATH").

Da sollte wohl der User ermittelt werden. Dies kann einfacher über Application.Username geschehen.

M.E. kann das so nicht funktionieren. Im Prinzip muss für jede potenziell zu ändernde Zelle der ursprüngliche Wert zwischengesichert werden, da reicht eine einzige Variable nicht aus.

Gruß
Axel

Anzeige
Hier kommt der restliche Code...
13.09.2002 21:37:32
Ramses
Hallo Peter,

da hab ich gestern abend etwas vergessen.
Hier kommt der ganze Code :-))

Gruss Rainer

Appliation.Username....
13.09.2002 21:39:27
Ramses
Hallo Axel,

... gibt den Namen aus, auf den die Application zugelassen / installiert wurde. Im Normalfall die Firma.
Mit Environ(24) kriegst du auf einfache Art und Weise den am Netzwerk / Computer angemeldeten Benutzer.

Gruss Rainer

Noch nicht ganz /mt
13.09.2002 21:50:36
Axel
Hallo Ramses,

nicht übel, ergibt aber einen Fehler wenn ein Bereich aus mehreren Zellen selektiert wird, da OldValue dann einem Variant-Array entspricht, besser deshalb:

Bleibt nur noch die Auflösung für Environ(24).

Gib doch bitte eine kurze Erklärung hierzu.

Danke und Gruß
Axel

Anzeige
Akzeptiert :-)
13.09.2002 21:56:06
Ramses
Hallo Axel,

kopier mal den Code in ein Modul und lass ihn in einer leeren Tabelle laufen.
Dann siehst du genau was du mit Environ ganz einfach abfragen kannst :-))

Gruss Rainer

Re: Warum ist das so
13.09.2002 22:11:05
PeterH
Hallo Ramses
Bin ein Makroneuling - verstehe daher die Diskusion zu diesem Thema nicht - ging bisher davon aus dass ich deinen Code einfach markiere und in ein Modul meiner Arbeitsmappe kopiere (dabei entstehen zwei Striche) und das wars dann.

Es tut sich aber gar nichts - rein gar nichts

warum????

Gruß

Peter

Weil...
13.09.2002 22:18:50
Ramses
Hallo Peter,

... der Code in einem Modul steht :-)
Der obenstehende Code muss in ein sogenanntes Klassenmodul. In diesem Fall in das Klassenmodul der Tabelle die du überwachen willst.
Mach einen Doppelklick auf die Tabelle im VB-Editor und kopiere den Code dort hinein.
Jedesmal wenn du eine Zelle auswählst ("Worksheet_Selection_Change"), wird die Variable "Oldvalue" gefüllt.
Wenn ein Inhalt geändert wurde ("Worksheet_Change") wird überprüft ob der Inhalt unterschiedlich zur Variable "Oldvalue", also den Wert vor der Änderung, ist. Wenn ja, werden die entsprechenden Werte in die Tabelle Protokoll geschrieben.

Das wars. 1984 lässt grüssen :-))

Gruss Rainer

Anzeige
Frage /mt
13.09.2002 22:21:57
Axel
Hallo Rainer,

Hatte vorhin nur mal im Direktfenster Environ(24) getestet und keine Ausgabe bekommen.

Jetzt habe ich Deinen Code laufen lassen und mir die Hilfe zu Environ durchgelesen.

Bei mir sind nur die ersten 11 Variablen gesetzt, ich arbeite allerdings auch Standalone.

Die Reihenfolge entspricht der des Set-Kommandos im DOS-Fenster, also wahrscheinlich in der Folge des Definierens.

Dann kann man aber auch in einem Netzwerk nicht davon ausgehen, das an Position 24 grundsätzlich Hinweise auf den User abgelegt sind.

Sehe ich das richtig?

Gruß
Axel

Re: Frage /mt
13.09.2002 22:27:24
Ramses
Hallo Axel,

in einer Standalone-Umgebung, ohne NT !!, werden nur die wenig Informationen ausgegeben.
In einer NT / Novell- Umgebung ( Standalone/Netz ) erhältst du immer die 26 Parameter.

Gruss Rainer

Anzeige
Alles klar. Danke /ot
13.09.2002 22:30:18
Axel
ot
Re: Danke - Das wars
13.09.2002 23:15:48
PeterH

Hallo Rainer

Jetzt ist alles klar - es funktioniert - Danke für Deine Hilfe

Gruß

Peter

Re: Noch nicht ganz /mt
14.09.2002 10:04:06
PeterH

Hallo Alex

Kann das Problem mit dem Bereich selektieren nicht lösen.

Muß ich diese Zeilen irgendwo einfügen?
Stelle ich diese drei Zeilen einfach am Ende dazu als eigenes Sub?
Oder was muß ich tun damit es funktioniert.

Ebenso habe ich in der Spalte D nur Leerzellen?

Was mache ich falsch?

Bitte um Hilfe!

Gruß

Peter

Re: Noch nicht ganz /mt
16.09.2002 13:18:58
Axel
Hallo,

die alte Worksheet_SelectionChange() einfach durch die neue ersetzen.

Gruß
Axel

Re: Bereich Entf = Fehler
16.09.2002 23:22:07
PeterH

Danke!

wenn ich mehr als eine Zelle markiere und den Inhalt entfernen will gibt es eine Fehlermeldung?

Gruß

Peter

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige