Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1108to1112
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

Useraktionen logen

Useraktionen logen
Glen
Guten Tag liebe Excelfreunde
Ich hatte folgendes Makro (einst als geniale Lösung aus diesem Forum) auf Excel 2000 in Betrieb. _ Nun haben wir in der Abteilung auf Excel 2007 gewechselt und das Makro spielt verrückt, in dem es nicht mehr nur die veränderten Werte aufzeichnet. Gibt es hier jemanden, der mir zu dieser Thematik weiterhelfen kann? Hier der Code

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim lRow As Long
With Worksheets("ProtDet")
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Target.Address(False, False)
.Cells(lRow, 2).Value = Now
.Cells(lRow, 3).Value = Application.UserName
.Cells(lRow, 4).Value = Target.Value
End With
End Sub

Vielen Dank im voraus und einen freundlichen Gruss vom Glen

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

Betreff
Benutzer
Anzeige
ungetestet...
21.10.2009 14:13:02
Tino
Hallo,
versuche es mal so.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim lRow As Long
Application.EnableEvents = False
With Worksheets("ProtDet")
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Value = Target.Address(False, False)
.Cells(lRow, 2).Value = Now
.Cells(lRow, 3).Value = Application.UserName
.Cells(lRow, 4).Value = Target.Value
End With
Application.EnableEvents = True
End Sub
Gruß Tino
AW: ungetestet...
21.10.2009 14:31:09
Glen
Hallo Tino
Vielen Dank erst mal! Das Funktioniert!
Ist es nun so, dass wenn ich Mappen (Januar-Dezember) habe und aus allen Mappen die Eingaben in der Mappe "ProtDet" protokollieren möchte, diesen Code jeder Mappe zuweisen muss? Oder gibt es hierfür einen einfacheren Weg?
Danke nochmals für deine bisherige Hilfe!
Anzeige
vielleicht so...
21.10.2009 15:52:18
Tino
Hallo,
könntest es mal so versuchen, kommt als Code in DieseArbeitsmappe.
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Dim lRow As Long 
Dim arMonat() 
Dim Zellen As Range 
 
'Tabellen die überwacht werden sollen 
arMonat = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember") 
 
If IsNumeric(Application.Match(Sh.Name, arMonat, 0)) Then 
Application.EnableEvents = False 
 For Each Zellen In Target 
   With Worksheets("ProtDet") 
       lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 
      .Cells(lRow, 1).Value = Sh.Name & "!" & Target.Address(False, False) 
      .Cells(lRow, 2).Value = Now 
      .Cells(lRow, 3).Value = Application.UserName 
      .Cells(lRow, 4).Value = Target.Value 
   End With 
 Next Zellen 
Application.EnableEvents = True 
End If 
End Sub 

Gruß Tino
Anzeige
überwachten Bereich einschränken
21.10.2009 16:02:57
Tino
Hallo,
allerdings würde ich den überwachten Bereich auf das nötige einschränken,
sonst kann es passieren wenn einer den gesamten Tabellenbereich überschreibt
z. Bsp. durch kopieren, dass Dein Makro Purzelbäume schlägt.
z. Bsp. so
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Dim lRow As Long 
Dim arMonat() 
Dim Zellen As Range 
 
'Tabellen die überwacht werden sollen 
arMonat = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember") 
 
If IsNumeric(Application.Match(Sh.Name, arMonat, 0)) Then 
 Set Zellen = Intersect(Sh.Range("A1:Z500"), Target) '<--------- Überwchten Bereich einschränken 
    If Not Zellen Is Nothing Then 
      Application.EnableEvents = False 
           For Each Zellen In Zellen 
             With Worksheets("ProtDet") 
                 lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 
                .Cells(lRow, 1).Value = Sh.Name & "!" & Target.Address(False, False) 
                .Cells(lRow, 2).Value = Now 
                .Cells(lRow, 3).Value = Application.UserName 
                .Cells(lRow, 4).Value = Target.Value 
             End With 
           Next Zellen 
       Application.EnableEvents = True 
    End If 
End If 
End Sub 

Oder besser wäre die Zellen die nicht bearbeitet werden zu schützen.
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige