本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[XL]特定のシートがアクティブになったときにメニューを淡色表示にする

文書番号: 402468

最終更新日: 1997/10/20


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP402468

概要

操作の状況によって、使用できないコマンドを淡色表示にすることで「視覚的」
に状況を示すことができます。
本文書は、 Microsoft(R) Visual Basic(R) Programming System Applications
Edition (以下 VBA) を使用して、特定のシートがアクティブになったときにメニ
ュー バーのすべてのメニューを淡色表示にする方法をサンプル モジュールと共に
解説しています。

詳細

特定のシートがアクティブになったときに指定したマクロを実行させるには、OnSheet Activate プロパティを使用します。
OnSheetActivate プロパティで指定できるシートは、特定のシート (Chart、Dialog
Sheet、Module、Worksheet オブジェクト)、指定されたブック (Workbook オブジ
ェクト) の任意のシート、開いている任意のブック (Application オブジェクト)
の任意のシートなどがあります。
指定したメニュー バーを淡色表示にするには、Menu オブジェクトの Enabled プロパ ティを使用します。

サンプル 1

次のサンプル モジュールでは、シート名「 Sheet1 」のシートがアクティブになったと きに、すべてのメニューを淡色表示にしています。
マクロ Only_Sheet1 を実行してください。解除するには、マクロ Only_Sheet1_Reset を実行してください。
なお、マクロ Only_Sheet1 を実行すると、その時シート名が「 Sheet1 」となっている シート自身にメニューを淡色表示にする動作が登録されますので、マクロ実行後に
シート名を「 Sheet1 」以外のものに変更しても、そのシートがアクティブになっ
た場合はメニューが淡色表示になります。
  Sub Only_Sheet1()
      Worksheets("sheet1").OnSheetActivate = "Menu_Enabled_False"
      Worksheets("sheet1").OnSheetDeactivate = "Menu_Enabled_True"
  End Sub
  Sub Only_Sheet1_Reset()
      Worksheets("sheet1").OnSheetActivate = ""
      Worksheets("sheet1").OnSheetDeactivate = ""
      Worksheets("sheet1").Select
  End Sub
  Sub Menu_Enabled_False()
      For Each mn In ActiveMenuBar.Menus
          mn.Enabled = False
      Next mn
  End Sub
  Sub Menu_Enabled_True()
      For Each mn In ActiveMenuBar.Menus
          mn.Enabled = True
      Next mn
  End Sub

サンプル 2

次のサンプル モジュールでは、<サンプル 1> のマクロ Only_Sheet1 の機能に加 え、マクロ実行時にワークシート Sheet1 がなかった場合はエラー メッセージを表示 しています。
  Sub Only_Sheet1()
  On Error Resume Next
      Worksheets("sheet1").OnSheetActivate = "Menu_Enabled_False"
          If Err <> 0 Then
              MsgBox ("sheet1 がありません")
              End
          End If
      Worksheets("sheet1").OnSheetDeactivate = "Menu_Enabled_True"
  End Sub
  Sub Only_Sheet1_Reset()
      Worksheets("sheet1").OnSheetActivate = ""
      Worksheets("sheet1").OnSheetDeactivate = ""
      Worksheets("sheet1").Select
      Menu_Enabled_True
  End Sub
  Sub Menu_Enabled_False()
      For Each mn In ActiveMenuBar.Menus
          mn.Enabled = False
      Next mn
  End Sub
  Sub Menu_Enabled_True()
      For Each mn In ActiveMenuBar.Menus
          mn.Enabled = True
      Next mn
  End Sub

Keywords: KBHOWTO KB402468
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system