Excelには、ワークブック内のあるワークシートから別のワークシートに移動するためのさまざまな方法が用意されています。ワークシート間の移動を無効にしたい場合は、何かをするために必要なさまざまな方法のために、目の前に難しいタスクがあります。

たとえば、ワークシート間を移動する1つの方法は、Ctrl + PageUpまたはCtrl + PageDownを押すことです。特定のブックに対してこれらのキーを無効にするには、次の方法でOnKeyメソッドを使用する必要があります。

Private Sub Workbook_Activate()

Application.OnKey "^{PgDn}", ""

Application.OnKey "^{PgUp}", ""

End Sub
Private Sub Workbook_Deactivate()

Application.OnKey "^{PgDn}"

Application.OnKey "^{PgUp}"

End Sub

これらの2つのマクロは、ThisWorkbookオブジェクトに配置する必要があります。 1つ目は、ブックがアクティブ化されるたびに実行され、Ctrl + PageUpおよびCtrl + Page Downは、押されても何も実行されないため無効になります。 2番目のマクロは、ブックが非アクティブ化されたときに実行され、キーを再度有効にします。

シートを手動で選択する、移動する、ハイパーリンクを使用するなど、ワークシートを切り替える方法は他にもたくさんあります。ワークシート間の移動を防ぐ最も簡単な方法は、アクセスしたくないワークシートを非表示にすることです。ワークブックを保護し、VBプロジェクトを保護することは、ユーザーがシート間を移動するのを「阻止」するのにも役立ちます。

シートが非表示になっていると、選択できないため、移動できません。 Go Toはそれらに移動せず、ハイパーリンクはそれらに移動しません。

ユーザーが後で非表示のワークシートを表示できるようにする場合は、独自のコントロール/ボタンを使用してマクロルーチンを作成し、それらのシートに移動する必要があります。このルーチンは、これから行うシートを「再表示」し、残ったシートを非表示にします。

ニーズに応じて、試すことができるもう1つのアプローチがあります。 ThisWorkbookオブジェクトに次のマクロを追加できます:

Private Sub Workbook_SheetDeactivate(ByVal mySheet As Object)

Application.EnableEvents = False     mySheet.Activate     Application.EnableEvents = True End Sub

このマクロは、現在のワークシートが非アクティブ化されるたびに実行されます。

基本的に、残っているワークシートを「再アクティブ化」します。つまり、他のワークシートを選択することはできません。

注:

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

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

このヒント(3333)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。