Hilfe beim Code

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Hilfe beim Code
von: Michael
Geschrieben am: 08.10.2015 14:37:18

Hallo zusammen,
ich habe folgenden Code um Änderungen mittels VBA zu tracken:

Option Explicit
Dim vOldVal 'Must be at top of module
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim bBold As Boolean
If Target.Cells.Count > 1 Then Exit Sub
On Error Resume Next
    With Application
         .ScreenUpdating = False
         .EnableEvents = False
    End With
    If IsEmpty(vOldVal) Then vOldVal = "Empty Cell"
    bBold = Target.HasFormula
        With Sheet2
            .Unprotect Password:="Secret"
                If .Range("A1") = vbNullString Then
                    .Range("A1:E1") = Array("CELL CHANGED", "OLD VALUE", _
                        "NEW VALUE", "TIME OF CHANGE", "DATE OF CHANGE")
                End If
            With .Cells(.Rows.Count, 1).End(xlUp)(2, 1)
                  .Value = Target.Address
                  .Offset(0, 1) = vOldVal
                      With .Offset(0, 2)
                        If bBold = True Then
                          .ClearComments
                          .AddComment.Text Text:= _
                                 "Track Changes" & Chr(10) & "" & Chr(10) & _
                                  "Bold values are the results of formulas"
                        End If
                          .Value = Target
                          .Font.Bold = bBold
                      End With
                .Offset(0, 3) = Time
                .Offset(0, 4) = Date
            End With
            .Cells.Columns.AutoFit
            .Protect Password:="Secret"
        End With
    vOldVal = vbNullString
    With Application
         .ScreenUpdating = True
         .EnableEvents = True
    End With
On Error GoTo 0
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    vOldVal = Target
End Sub
an sich eine feine Sache. Ich würde das Makro gerne erweitern. Und zwar würde ich gerne darstellen auf welchem Sheet die Änderungen vorgenommen wurden (momentan wird nur die Range angezeigt) und durch welchen Benutzer (quasi der Benutzername oben rechts in Excel). Für jede Hilfe wäre ich sehr dankbar. Leider reichen meine VBA Kenntnisse nicht aus um den Code selber anzupassen.
Gruß
Michael

Bild

Betrifft: AW: Hilfe beim Code
von: Luschi
Geschrieben am: 08.10.2015 15:48:41
Hallo Michael,
MsgBox Sh.Name & " - " & Environ("Username")
verrät Dir beide Informationen, wobei 'Sh' der Übergabeparameter von
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
und 'Environ' eine Vba-Funktion ist.
Gruß von Luschi
aus klein-Paris

Bild

Betrifft: AW: Hilfe beim Code
von: Michael
Geschrieben am: 08.10.2015 16:15:31
Danke Luschi!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Fehlermeldung bei Blattschutz"