Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

makro probleme

makro probleme
19.02.2008 18:18:00
kalle
Hi Leutz,
brauche mal wieder eure Hilfe. folgendes Makro funktioniert soweit ganz gut, nur möchte ich nicht nur den neuen Wert der Zelle protokollieren sondern auch gerne den alten Wert. Kann mir jemand helfen. Ich kriege das irgendwie nicht hin. Vielen Dank im Voraus

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim lngZeile As Long
Dim strBenutzer, strDatum, strUhrzeit As String
strBenutzer = Environ("UserName")
strDatum = Format(Now, "dd.mm.yyyy")
strUhrzeit = Format(Now, "HH:MM")
Application.EnableEvents = False
With Worksheets("P2")
lngZeile = .Range("A65536").End(xlUp).Row + 1
.Cells(lngZeile, 1).Value = strDatum
.Cells(lngZeile, 2).Value = strUhrzeit
.Cells(lngZeile, 3).Value = strBenutzer
.Cells(lngZeile, 4).Value = Sh.Name
.Cells(lngZeile, 5).Value = Target.Address
.Cells(lngZeile, 6).Value = Target.Value
On Error Resume Next
.Cells(lngZeile, 5).Replace What:="$", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False  'Dollarzeichen löschen
End With
Application.EnableEvents = True
End Sub


gruss kalle

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: makro probleme
19.02.2008 18:36:26
Nepumuk
Hallo Kalle,
dazu müsstest du dir im Selection_Change-Event den Zellwert merken bzw. in eine lokale Variable schreiben, welche du dann im Change_Event ausgibst. So z.B.:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private vntOldValue As Variant

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim lngZeile As Long
    Dim strBenutzer As String, strDatum As String, strUhrzeit As String
    strBenutzer = Environ("UserName")
    strDatum = Format(Date, "dd.mm.yyyy")
    strUhrzeit = Format(Time, "HH:MM")
    Application.EnableEvents = False
    With Worksheets("P2")
        lngZeile = .Range("A65536").End(xlUp).Row + 1
        .Cells(lngZeile, 1).Value = strDatum
        .Cells(lngZeile, 2).Value = strUhrzeit
        .Cells(lngZeile, 3).Value = strBenutzer
        .Cells(lngZeile, 4).Value = Sh.Name
        .Cells(lngZeile, 5).Value = Target.Address(False, False)
        .Cells(lngZeile, 6).Value = Target.Value
        .Cells(lngZeile, 7).Value = vntOldValue
    End With
    Application.EnableEvents = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    vntOldValue = Target.Cells(1).Value
End Sub

Mit der Prozedur bekommst du aber nur Änderungen in einzelnen Zellen mit. Was, wenn ich mehrere Zellen gleichzeitig ändere? Da läuft deine Prozedur übrigens schon auf einen Fehler.
Gruß
Nepumuk

Anzeige
AW: makro probleme
19.02.2008 18:43:33
kalle
Hi Nepumuk,
danke für die schnelle Hilfe. Klappt soweit ja ganz gut, aber Du hast recht. Wenn ich den Inhalt von mehreren Zellen lösche bekomme ich nichts protokolliert. Kannst Du mir auch sagen wie ich diesen Fehler abfangen kann?

Vieeeeelen Dank
19.02.2008 19:12:38
kalle
Danke Nepumuk für die tolle und schnelle Hilfe
gruss kalle

AW: makro probleme
19.02.2008 18:46:00
Daniel
Hi
da beim Start deines Makros der alte Wert schon weg ist, musst du den alten Wert in einer Variablen zwischenspeichern, und zwar jedes mal, wenn du eine andere Zelle markierst.
du brauchst daher ein 2. Makro beim Event SELECTION_CHANGE

Option Explicit
Dim alterWert As Variant



Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim lngZeile As Long
Dim strBenutzer, strDatum, strUhrzeit As String
strBenutzer = Environ("UserName")
strDatum = Format(Now, "dd.mm.yyyy")
strUhrzeit = Format(Now, "HH:MM")
Application.EnableEvents = False
With Worksheets("P2")
lngZeile = .Range("A65536").End(xlUp).Row + 1
.Cells(lngZeile, 1).Value = strDatum
.Cells(lngZeile, 2).Value = strUhrzeit
.Cells(lngZeile, 3).Value = strBenutzer
.Cells(lngZeile, 4).Value = Sh.Name
.Cells(lngZeile, 5).Value = Target.Address(0, 0) 'Addresse ohne Dollars
.Cells(lngZeile, 6).Value = Target.Value
.Cells(lngZeile, 7).Value = alterWert
End With
Application.EnableEvents = True
End Sub



Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
alterWert = Target.Value
End Sub


Gruß, Daniel.
PS meine änderungen hab ich fett markiert

Anzeige
AW: makro probleme
19.02.2008 18:52:00
kalle
Hi Daniel,
danke für die Hilfe. Nepumuk hat mich auf einen Fehler hingewiesen, das ich bei Änderungen in mehreren Zellen (zB.zwei Zellen löschen) keine protokollierung habe. Kannst Du mir da helfen?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige