記事キャッチ画像  (21)  ワークシートのイベントプロシージャを作成し、イベントプロシージャを理解する! 

 1. Excel2016 for Mac でもイベントプロシージャを間違いなく記述すれば、ちゃんと動作する 

 2. イベントプロシージャとは、イベントが発生した際に呼び出しされるプロシージャのことだ 

  「広告」  
 

 (21)  ワークシートのイベントプロシージャを作成し、イベントプロシージャを理解する! 

Excel メニューバーの [ヘルプ] - [更新プログラムのチェック] にて、適用されていないアップデートがあれば行ってください。 

Excel 2016 for Mac 環境での説明となりますので、 Mac版 Excel 2011 では( VBA が利用できますが )同じ結果にならない場合があるかもしれません。

現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)

( ユーザー定義関数 のVBAコードを含んだ)前回使用した XLSM ファイルを、「マクロを有効」にして開きます。

15

[ alt ] + [ F11 ] にて VBE を開き、Module1 ではなく(上記画面赤枠の) Sheet1 を選択後、以下の VBAコードを入力するかコピーして貼り付け。
SheetN の N の部分は、「1」でない場合もあり )

Rem
Rem    SheetN (SheetN)
Rem

Option Explicit

'----------------------------------------
'    Event: Worksheet_BeforeDoubleClick()
'----------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Target.Interior.Color = RGB(0, 127, 63) Then
        Target.Interior.ColorIndex = 0    ' Color clear!
    Else
        Target.Interior.Color = RGB(0, 127, 63)
    End If

Rem Cancel = True

End Sub

先頭の「 Option Explicit 」は、Dim で宣言していない変数があった場合にエラーとするためのキーワード。
「 Option Explicit 」が無いと、(未指定時デフォルトの) Variant型となり、エラーとならない。
型宣言を怠ると不具合を見つけにくいため、必ず 各モジュールの先頭で「 Option Explicit 」を記述すること!


 1. Excel2016 for Mac でもイベントプロシージャを間違いなく記述すれば、ちゃんと動作する 

22

ByVal も含めて1文字も間違いなく、 Worksheet_BeforeDoubleClick() プロシージャを記述すれば、該当ワークシート上の任意のセルのダブルクリックで 同プロシージャが実行される。
セルの背景色が RGB(0, 127, 63) の場合は背景色無しとし、それ以外の色の場合は RGB(0, 127, 63) の背景色に変更。

これは、Mac版の Excel2016 でも イベントプロシージャがちゃんと動作することを意味する。
Windows版のように VBE のコード補完機能 がまだ実装されていないだけだ。


 2. イベントプロシージャとは、イベントが発生した際に呼び出しされるプロシージャのことだ 

マウスのダブルクリックや右クリックは、 イベント の一種だ。
イベントは、アプリ上で特定の操作を行った際に発生し、 OSを経由して アプリに通知される。
イベント が発生した際に呼び出しされるプロシージャを、 イベントプロシージャ と呼ぶ。
VB だけでなく、 VBA も イベントプロシージャ の利用が可能。

イベントプロシージャは「標準モジュール」ではなく、ブックやワークシートなどイベントの対象となるオブジェクトモジュール(ワークブック・ワークシート等)に記述しなければいけない。
同一イベントでも対象のオブジェクトモジュールが違えば、異なる イベントプロシージャ となる。

VBAの場合 イベントプロシージャは Private プロシージャとなり、「プロシージャ名・引数の型・引数の順番」を決められた通りに記述しなければならない。
Windows版 の場合、間違えないよう VBE にて「プロシージャ名・引数の型・引数の順番」が補完される。
「プロシージャ名・引数の型・引数の順番」はインターネットで調べるか、Windows版Excelの VBE で調べれば判るので、その通りに記述すれば良い。

 Worksheet_BeforeDoubleClick() イベントプロシージャの引数は2つで、1つめは(イベントを発生させた該当セルを示す) Range オブジェクトが渡される。
2つめの引数の使い方は、Rem でコメントにしてある最終行を復活させれば解りやすい。
Excel でセルをダブルクリックすると、(通常)セルの編集状態 となる。
セルの編集状態 になることをキャンセルするために、引数 Cancel が存在し、初期値は False
ダブルクリックしてもセルの編集状態にしたくない場合は、引数 Cancel にTrue を代入する。
Boolean 型は、 False か True の 2値のみが入る型。
最終行のコメントを外して、試してみて欲しい。


次回は、「 ブック 」の イベントプロシージャ をテストします!


お疲れ様でした!
[command] + [Q] にてExcel を終了時、「作業中のブック」を保存するか確認のダイアログ画面が表示されるため 「保存」しましょう。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)


最後まで読んでいただき、ありがとうございます。
ぜひ、右側の「人気ブログランキング」投票に ご協力ください。
また、お越しくださいませ。
// アタル
 

  「広告」