ローリーは、Excelブックのプロパティを表示する方法を知っています。ただし、彼女がやりたいのは、個々のワークシートに関連する同様のプロパティを表示することです。たとえば、彼女は、個々のワークシートの作成日、変更日、作成者、または「最終変更者」などのプロパティを表示する方法があるかどうか疑問に思います。

残念ながら、Excelはワークシートのそのような情報を追跡しません。私たちが理解できた唯一の回避策は、ワークブック内のワークシートに関する情報の独自の記録を作成することです。 Workbook_SheetChangeイベントハンドラーを開発するための明白な方法。以下は、Visual BasicEditorでThisWorkbookオブジェクトに追加できる例です。

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

ブックに変更を加えると、イベントハンドラーがトリガーされます。最初に、Statsという名前のワークシートがあるかどうかを確認します。そうでない場合は、ワークシートが作成され、いくつかの基本的な情報がワークシートに追加されます。ハンドラーは統計ワークシートを調べて、そこにあるデータに、変更が発生したワークシートの行が含まれているかどうかを判別します。そうでない場合は、行が追加されますが、そうである場合は、行の情報が更新されます。

ハンドラーは、ワークシート名、作成者、最後に変更が加えられた日付、および変更を加えたユーザー名の4つの情報のみを追跡します。 (Creatorプロパティは、ワークシートを作成したプログラムに関連する数値を示します。これは人間にとってはあまり役に立ちません。情報の保存方法の例として含めました。)

これは回避策にすぎないことを忘れないでください。ワークシートで追跡する情報の種類を慎重に検討する必要があります。次に、その要望を反映するようにコードを変更できます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(7542)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。