[三流君 ] −−>
[VBAで楽しく ] −−>
[バックナンバー一覧 ]
−−> No.060 Cancel=Trueの使い方(例題:Excel 右クリック禁止)
Cancel=Trueの使い方(例題:Excel 右クリック禁止)
メルマガ発行内容
<Cancel=Trueの使い方(例題:Excel 右クリック禁止)>
こんにちは、
三流プログラマーKen3です。
今回は、
モジュールの引数でよく見かける、
Cancel=Trueの使い方
~~~~~~~~~~~
を軽く書きたいと思います。
今回の関連画像は、手抜きで無しです(オイオイ)
が、
サンプルファイルは、
http://www.ken3.org/vba/lzh/vba060.lzh
にtest060-book.xlsが保存されています。
(画像無しだけど、サンプルぐらいは作りますよ(笑))
/*
* 1.今回のキッカケ
*/
In message "質問",
Excel初心者 さん wrote...
>質問なのですが…
>Excelシートの右クリックを禁止にしたいのですが素人にもわかるように教えて
>ください
>
----
なかなか、難しい質問ですよね。
初心者・素人・わかり易く
かぁ、、、
ムリしないで三流的な回答を書きます。
/*
* 2.イベントでタイミングをチェック
*/
まずは、禁止したい行為が発生したことを知らないとイケナイよね。
(社内で私用メール禁止なんて言ってるだけじゃなくて、発生を知らないと防止もできない?)
シートで発生するイベント処理について、
http://www.ken3.org/backno/backno_vba08.html#35
で、
イベントのテスト方法を少し書きました。
Excelのシートで発生するイベントのテストを下記のように行いました。
Private Sub Worksheet_Activate()
MsgBox "_Activate イベント発生 こんにちは"
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
MsgBox "_BeforeDoubleClick イベント発生 叩くなよそんなに"
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
MsgBox "_BeforeRightClick イベント発生 右クリックで何したいの?"
End Sub
Private Sub Worksheet_Calculate()
MsgBox "_Calculate イベント発生 計算したよ"
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
MsgBox "_Change イベント発生 中身さわったでしょ(変更した)"
End Sub
Private Sub Worksheet_Deactivate()
MsgBox "_Deactivate イベント発生 サヨナラ、また来てね"
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
MsgBox "_SelectionChange イベント発生 浮気者セル移動したね"
End Sub
と、MsgBoxを入れる方法でイベントの発生をテストしました。
/*
* 3._BeforeRightClickが右クリックのイベント
*/
_BeforeRightClickが右クリックのイベントでした。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
MsgBox "_BeforeRightClick イベント発生 右クリックで何したいの?"
End Sub
右クリックすると、このイベントが発生します。
ここに禁止の処理を書きます。
で、どんな記述?
とても簡単で、
Cancel = True
と入れると、サブ関数を抜けた時、
いつもの右クリックのメニューが表示されないんですよ。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
If MsgBox("右クリック禁止?", vbYesNo) = vbYes Then
Cancel = True '処理をキャンセルにする
End If
End Sub
とやると、メッセージボックスが表示され、
はいを選ぶといつもの右クリックが禁止できます。
質問は右クリック禁止だったよね、
Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
Cancel = True '処理をキャンセルにする
End Sub
で、いきなりキャンセルにしてしまえば、
質問のシートで右クリック禁止はOKかなぁ。
/*
* 4.Cancel = True ほかにもいろいろと使えます
*/
Cancel = True なんか変な感じだけど(私だけかな?)
ほかにもいろいろと使えます。
'終了前のイベントで確認してみた
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("本当に終了するの?", vbYesNo) = vbNo Then
Cancel = True '処理をキャンセルにする
MsgBox "思いとどまりました"
End If
End Sub
'保存前のイベントで確認してみた
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If MsgBox("保存しますか?", vbYesNo) = vbNo Then
Cancel = True '処理をキャンセルにする
MsgBox "保存しなかったよ、未編集の終了に注意してね"
End If
End Sub
Cancel = True で条件によってキャンセル可能な処理を作成することが出来ます。
/*
* 5.おわりの挨拶
*/
今回は、
・_BeforeRightClickが右クリックのイベント
・Cancel = True で発生したイベントをキャンセルする
でした。
今回の関連画像は、手抜きで無しです(オイオイ)
が、
サンプルファイルは、
http://www.ken3.org/vba/lzh/vba060.lzh
にtest060-book.xlsが保存されています。
(画像無しだけど、サンプルぐらいは作りますよ(笑))
拾い読みして、
1つでも何かの参考となれば幸いです。
Excel/Access大好き、三流プログラマーKen3でした。
----------------------------------
関連項目(ただのバックナンバー紹介)
----------------------------------
[No.35 イベント処理について]
http://www.ken3.org/backno/backno_vba08.html#35
では、MsgBoxでイベントの発生を確認してました。
--------------------
読者からのお便り紹介
--------------------
In message "最近愚痴系ツマラナイよ",
Function さん wrote...
>がんばれプログラマー! http://www.ee-max.co.jp/melmag/
>軽めで読みやすい、けんぞうもガンバレよ
----
ヤバイなぁ、プログラマーの愚痴系最近ツマラナイと指摘メールが、、、、
がんばれプログラマー!
http://www.ee-max.co.jp/melmag/
私も軽く見ましたが、シンプルで見易かったです。
その他、お奨めのメルマガ、HPあったら教えてください。
ヨロシクです。
他店の味が気になる変り者、でも独自路線(笑)の三流作者Ken3でした。
ページフッター
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
種類別のリンク や 広告など
Blogとリンク :[三流君の作業日記 ]/
[VBAやASPのサンプルコード ]/
広告-[通販人気商品の足跡 ]
[三流君(TOP ken3.org へ戻る) ]
/ [VBA系TOPへ ]
/ [VBA系バックナンバー目次へ移動 ]