Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1684to1688
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

Änderungshistorie; Undo Fehler

Änderungshistorie; Undo Fehler
02.04.2019 09:42:18
Chris
Hallo zusammen,
ich habe einen Code für eine Änderungshistorie, es funktioniert auch alles ganz gut, nur ich bekommen immer eine Undo Fehlermeldung.
Erkennt einer den Fehler, den der Code enthält ?

Private Sub Worksheet_Change(ByVal Target As Range)
'CR
Const xRg As String = "A1:AQ1000"
Dim strOld As String
Dim strNew As String
Dim strCmt As String
Dim xLen As Long
With Target(1)
If Intersect(.Cells, Range(xRg)) Is Nothing Then Exit Sub
strNew = .text
Application.EnableEvents = True
Application.Undo
strCmt = "Edit: " & Format$(Now, "dd Mmm YYYY hh:nn:ss") & " by " & _
Application.UserName & Chr(10) & "Previous Text :- " & strOld
If Target(1).Comment Is Nothing Then
.AddComment
Else
xLen = Len(.Comment.Shape.TextFrame.Characters.text)
End If
With .Comment.Shape.TextFrame
.AutoSize = True
.Characters(Start:=xLen + 1).Insert IIf(xLen, vbLf, "") & strCmt
End With
End With
End Sub
Beste Grüße

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Änderungshistorie; Undo Fehler
02.04.2019 10:02:47
UweD
Hallo
habe mir den Code nicht komplett angesehen.
Aber innerhalb eines Changeevent wieder eine Zelle zu ändern (das geschieht ja durch das Undo) löst das Event erneut aus.
Deshalb vorher Ausschalten, dann die Zelländerung vornehmen und wieder Einschalten
Damit bei einem Fehler, auf jeden Fall das Einschalten erfolgt, die Fehlerbehandlung nutzen.
Private Sub Worksheet_Change(ByVal Target As Range)
  'CR 
    On Error GoTo Fehler
    Const xRg As String = "A1:AQ1000"
    Dim strOld As String
    Dim strNew As String
    Dim strCmt As String
    Dim xLen As Long
    With Target(1)
        If Intersect(.Cells, Range(xRg)) Is Nothing Then Exit Sub
        strNew = .Text
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
        
        strCmt = "Edit: " & Format$(Now, "dd Mmm YYYY hh:nn:ss") & " by " & _
            Application.UserName & Chr(10) & "Previous Text :- " & strOld
        If Target(1).Comment Is Nothing Then
            .AddComment
        Else
            xLen = Len(.Comment.Shape.TextFrame.Characters.Text)
        End If
        With .Comment.Shape.TextFrame
            .AutoSize = True
            .Characters(Start:=xLen + 1).Insert IIf(xLen, vbLf, "") & strCmt
        End With
    End With
    
    '*** Fehlerbehandlung 
    Err.Clear
    On Error GoTo Fehler
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub


LG UweD
Anzeige
AW: Änderungshistorie; Undo Fehler
02.04.2019 10:18:54
Chris
Danke für die schnell Hilfe, leider erscheint die Fehlermeldung immer noch.
Man muss noch dazu sagen, dass die Fehlermeldung nur erscheint, wenn ich eine Funkion in der Excel Tabelle, wie zum Beispiel "eine neue Zeile einfügen".
Komplett sieht es derzeit so aus.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$2:$D$2" Then Call FilterLoeschen
If Target.Address = "$F$2:$J$2" Then Call ZeileEinfuegen
If Target.Address = "$K$2:$N$2" Then Call Del_Row
If Target.Address = "$O$2" Then Call Sortieren
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
'CR
Const xRg As String = "A1:Z1000"
Dim strOld As String
Dim strNew As String
Dim strCmt As String
Dim xLen As Long
With Target(1)
If Intersect(.Cells, Range(xRg)) Is Nothing Then Exit Sub
strNew = .text
Application.EnableEvents = False
Application.Undo
strOld = .text
.Value = strNew
Application.EnableEvents = True
strCmt = "Edit: " & Format$(Now, "dd Mmm YYYY hh:nn:ss") & " by " & _
Application.UserName & Chr(10) & "Previous Text :- " & strOld
If Target(1).Comment Is Nothing Then
.AddComment
Else
xLen = Len(.Comment.Shape.TextFrame.Characters.text)
End If
With .Comment.Shape.TextFrame
.AutoSize = True
.Characters(Start:=xLen + 1).Insert IIf(xLen, vbLf, "") & strCmt
End With
End With
Err.Clear
On Error GoTo Fehler
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Anzeige
Musterdatei?
02.04.2019 11:25:12
UweD

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige