Laurie weiß, wie Eigenschaften einer Excel-Arbeitsmappe angezeigt werden. Sie möchte jedoch ähnliche Eigenschaften in Bezug auf einzelne Arbeitsblätter anzeigen. Zum Beispiel fragt sie sich, ob es eine Möglichkeit gibt, Eigenschaften wie Erstellungsdatum, Änderungsdatum, Autor oder „Zuletzt geändert von“ für einzelne Arbeitsblätter anzuzeigen.

Leider verfolgt Excel solche Informationen für Arbeitsblätter nicht. Die einzige Problemumgehung, die wir herausfinden konnten, besteht darin, Ihre eigenen Informationen zu den Arbeitsblättern in der Arbeitsmappe zu erstellen. Eine naheliegende Möglichkeit, einen Workbook_SheetChange-Ereignishandler zu entwickeln. Das folgende Beispiel können Sie dem ThisWorkbook-Objekt im Visual Basic-Editor hinzufügen:

Private Sub Workbook_SheetChange(ByVal ws As Object, ByVal Target As Range)

Dim s As Worksheet     Dim J As Integer     Dim FoundIt As Boolean

On Error Resume Next     Set s = Worksheets("Stats")

On Error GoTo 0     Application.EnableEvents = False     If s Is Nothing Then         ' Stats worksheet did not exist         Set s = Worksheets.Add(After:=Worksheets(Worksheets.Count))

s.Name = "Stats"

s.Range("A1") = "Worksheet"

s.Range("B1") = "Creator"

s.Range("C1") = "Last Modified"

s.Range("D1") = "Modifed By"

With s.Range("A1:D1")

.Font.Bold = True             .Borders(xlEdgeBottom).LineStyle = xlContinuous             .Borders(xlEdgeBottom).Weight = xlThin         End With

s.Range("A2") = s.Name         s.Range("B2") = s.CustomProperties.Creator         s.Range("C2") = Format(Now, " mm/dd/yyyy  hh:mm am/pm")

s.Range("D2") = Application.UserName     End If     J = 2     FoundIt = False     While (s.Cells(J, 1) <> "")

If s.Cells(J, 1) = ws.Name Then             FoundIt = True             s.Cells(J, 3) = Format(Now, " mm/dd/yyyy  hh:mm am/pm")

s.Cells(J, 4) = Application.UserName         End If         J = J + 1     Wend     If Not FoundIt Then         ' Worksheet name not found         s.Cells(J, 1) = ws.Name         s.Cells(J, 2) = ws.CustomProperties.Creator         s.Cells(J, 3) = Format(Now, " mm/dd/yyyy  hh:mm am/pm")

s.Cells(J, 4) = Application.UserName     End If     ws.Activate     Application.EnableEvents = True End Sub

Der Ereignishandler wird jedes Mal ausgelöst, wenn Sie eine Änderung in der Arbeitsmappe vornehmen. Zunächst wird überprüft, ob ein Arbeitsblatt mit dem Namen Stats vorhanden ist. Wenn nicht, wird das Arbeitsblatt erstellt und einige rudimentäre Informationen hinzugefügt. Der Handler überprüft im Arbeitsblatt „Statistiken“, ob die Daten dort eine Zeile für das Arbeitsblatt enthalten, in dem eine Änderung vorgenommen wurde. Wenn nicht, wird eine Zeile hinzugefügt. In diesem Fall werden die Informationen in der Zeile aktualisiert.

Der Handler verfolgt nur vier Informationen: den Arbeitsblattnamen, den Ersteller, das Datum, an dem die letzte Änderung vorgenommen wurde, und den Benutzernamen, der die Änderung vorgenommen hat. (Die Creator-Eigenschaft gibt einen numerischen Wert an, der sich auf das Programm bezieht, mit dem das Arbeitsblatt erstellt wurde. Sie ist für Menschen nicht besonders hilfreich, und ich habe sie als anschauliches Beispiel für die Speicherung von Informationen beigefügt.)

Denken Sie daran, dies ist nur eine Problemumgehung, und Sie sollten sorgfältig überlegen, welche Art von Informationen Sie für Ihre Arbeitsblätter verfolgen möchten. Sie können den Code dann ändern, um diesen Wunsch widerzuspiegeln.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (7542) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.