特定のワークシートが使用された回数を追跡する方法が必要な場合があります。これを達成する方法はたくさんあります。簡単な方法の1つは、カウントをワークシート自体に保存することです。

ワークシートタブを右クリックし、コンテキストメニューから[コードの表示]を選択します。 ExcelにVisualBasic Editorが表示されます。ここに、次のコードを貼り付ける必要があります。

Private Sub Worksheet_Activate()

Range("A1").Select 'customize Range     ActiveCell = ActiveCell + 1     Range("B1") = "times opened" 'customize Range End Sub

このコードは、ワークシートがアクティブ化されるたびにセルA1の値をインクリメントします。必要に応じて、マクロが情報を書き込むセルの場所を変更できます。

より徹底的なアプローチは、ブック内の名前付き参照をインクリメントするマクロを作成することです。次のマクロについて考えてみます。

Function IncrementEventCounter(sName As String, sht As Object)

On Error Resume Next     If sht.Names(sName) Is Nothing Then _       ThisWorkbook.Names.Add "'" & sht.Name & "'!" & sName, "1", False     On Error GoTo 0     With ThisWorkbook.Names("'" & sht.Name & "'!" & sName)

.RefersTo = Val(Mid(.Value, 2)) + 1     End With End Function

この関数は、使用量カウンターをインクリメントするイベントによってトリガーされる別のマクロから呼び出されるように設計されています。

たとえば、ワークシートがアクティブ化されるたびに追跡する場合は、ThisWorkbookオブジェクトの一部として次のマクロを使用します。

Private Sub Workbook_SheetActivate(ByVal sh As Object)

IncrementEventCounter "Activated", sh End Sub

マクロは、ワークシートの「Activated」という名前のカウンターをインクリメントします。これは、カウンターの名前とワークシートの名前を指定してIncrementEventCounterマクロを呼び出すことによって行われます。代わりに、ワークシートが変更された回数をカウントしたい場合は、ThisWorkbookオブジェクトの一部として次のマクロを使用できます。

Private Sub Workbook_SheetChange(ByVal sh As Object, _   ByVal Target As Excel.Range)

IncrementEventCounter "Changed", sh End Sub

このマクロと前のマクロの唯一の違いは、「変更済み」という名前のカウンターをインクリメントすることです。カウンターの値を確認するには、カウンターを参照するセルに数式を入力するだけです。たとえば、= Changedを入力してChangedカウンターの値を表示したり、= Activatedを入力してActivatedカウンターの値を表示したりできます。カウンターはシートごとに維持されるため、各カウンターの値はシートごとに異なります。

注:

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

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

このヒント(10544)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。