|
|
| Excel VBA Macro ・ その他 ・ FAQ |
|
ショートカットキーと右クリックを無効にするには?
|
|
|
|
Question 18.1 |
|
 |
 |
|
|
はじめまして。EXCEL97について教えて頂きたいことがあります。
それは、EXCEL起動時(マクロでもOK)にショートカットキー(Ctrl+Pなど)の機能を無効にする方法と、EXCEL起動時(マクロでもOK)に右クリックを無効にする方法です。
よろしくお願いいたします。
|
|
Answer |
Copyright (C) 1999.4.30 永井善王 |
|
|
あなたの質問内容は 3つですね。 1つ目は、Ctrl+Pだけでなく全部のショートカットキーの機能を、無効にしたいのですのね。
この点の回答に入る前に、沢山あるショートカットキーの中から比較的なじみのあるものを、一例として下表にまとめておきました。
|
| キー操作 |
目 的 |
キー操作 |
目 的 |
| Ctrl + P |
印刷 |
Enter |
セルの入力を確定する |
| Ctrl + A |
ワークシート全体を選択する |
Esc |
セルの入力を取り消す |
| Ctrl + C |
選択範囲をコピーする |
Ctrl + Enter |
選択したセル範囲に、アクティブ セルと同じ値を入力する |
| Alt + = |
SUM 関数を挿入する |
Alt + Enter |
セル内で改行する |
|
この他にも、いっぱいありますよ . . . では回答に入りましょう。
ショートカットキー全部の機能を、一つのマクロで無効にする方法は、申し訳ないですがわかりません。ですが、特定のショートカットキーの機能を止めたいならば、ダミーのサブプロシージャーを作成して、それをショートカットキーに登録すれば、止められます。
なぜそうなるかですが、初期設定のショートカットキーよりも、ユーザー設定のショートカットキーの方が優先されるからです。ダミーのサブプロシージャーは、例えば、下記のとおり カラッポ にしておきます。
Public Sub Not_Ctrl_P()
End Sub
このダミーのサブプロシージャーをショートカットキーに登録するためには、MacroOptionsメソッドの引数 hasShortcutKeyに Trueを指定して、引数 shortcutKeyにPを指定します。
くわしく知りたければ、エクセルのヘルプのトピックの検索から Microsoft Excel Visual Basicリファレンスへのショートカットで表示し、キーワードに「MacroOptions」と入力して検索すれば、見ることができます。
2つ目は、マウスの右クリックを無効にする方法ですね。
(質問者はExcel97環境です。この2つ目の回答は Excel95では使えません)
Excel97以上のVBAは、モジュールシートに記述するマクロのほかに、ThisWorkbookのコードに書きこむイベントプロシージャーがあります。それらはイベントごとにあらかじめ用意されているので、該当するところへ自分が希望するマクロコードを書きこめば有効になります。
マウスの右クリックは、Workbook_SheetBeforeRightClickとして用意されていますので、そこへ無効にするために Cancel = Trueと書き込みましょう。下記にまとめておきます。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As _
Excel.Range, Cancel As Boolean)
Cancel = True
End Sub
くわしく知りたければ、エクセルのヘルプのトピックの検索から Microsoft Excel Visual BasicリファレンスのVisual Basicリファレンスを表示し、キーワードに「イベント」と入力して表示させ、ワークシートオブジェクトイベントを表示すれば、見ることができます。
なお、この方法で無効にできる範囲は、Excel のクライアント領域で、非クライアント領域(メニューバーなど)に対しては無効と思われます。
3つ目は、Excel起動時に、これらの機能を有効にする方法ですね。
エクセルの起動フォルダ(XLStart)に、Auto_Openプロシージャーを組み込んだブックを入れておけば、起動と同時にブックが開かれて、そのマクロが実行されます。 起動フォルダは、標準インストールされたExcel97の場合は、Program filesフォルダの中のMicrosoft Officeフォルダの中のOfficeフォルダの中に、Excel95の場合は、MSOfficeフォルダの中のExcelフォルダの中にあります。
1つ目の機能を有効にするためには、この方法を使えば良いと思います。
2つ目のイベントプロシージーは、そのブックが開かれている間は常に有効です。
なお、Auto_Openプロシージャーについて知りたければ、エクセルのヘルプを見てください。関連事項として、Auto_Closeプロシージャーがあります。
最後に蛇足かも知れませんが、これらをする目的がユーザーが不用意にキーボードやマウスをさわることにより、マクロの実行に不都合が生じることを避けたいためでしたら、次の方法が使えるでしょう。
Excel95,97,98,2000 VBAには、Interactiveプロパティがありますが、これを使うと、キーボードやマウスからの入力を受け付けなくなります。この場合でも、表示されたダイアログボックスへの入力は可能ですので、それを使って回復できます。Interactiveプロパティについて知りたければ、エクセルのヘルプを見てください。
ご成功を祈ります。
|
|
|
マウスを操作しているとき、右クリックや左クリックなどを、無意識のうちにしていませんか?
これを、専門用語でイベントと言います。VB(VBA)は、このイベント型(使用者が、きっかけを与えること)で動作するのです。
つまり・・・人間にたとえると、
人間は、働いたり、遊んだりなど体を動かすとお腹が減りますよね! 体を動かすというイベント(きっかけ)があったから、その結果お腹が減った!! という結果が出たまでなんです。
だから、今回の考え方は右クリックをしたときに発生するイベントの関数をひろいだして・・・
その後、そのイベントを無効にするような設定をするわけです。
|
|
|
|
| |
|
|
|