初心者オサムシがExcelのマクロと戦う戦闘ブログである
by オサムシ
タグ:Target ( 1 ) タグの人気記事
試験メモ【イベントプロシージャ】/VBAエキスパート

イベントプロシージャ



イベントプロシージャとはExcel上で何か操作が行われたときに、それをマクロが感知してプロシージャを起動するという事

Excel上で変化が起こる事をイベントという訳だけど、もちろん変化が起こっただけじゃ、別に何の意味もない

そこに仕掛けをしておくからこそ効果があるんだよね

例えば、どこかのセルを書き換えたとか、右クリックをしたとか、Excelファイルを開いた(つまりWorkbookを開いた)とか

それを全て「イベントが起こった」という訳

いろいろ使い道はあるけど、シートにマクロボタンを設けて、それをクリックすれば別にイベントで反応させなくても良いんだけど、例えば、絶対に書き換えてはいけない書類ファイルがあったとする

それを上書き保存しちゃったらマズいから、「上書き保存をしようとしたら別名保存させるようにする」なんてのはどうだろう

上書き保存はマクロではSaveだけど、Saveというイベントが起こったら、BeforeSaveつまり「Saveの前に」別名保存させるのでオリジナルは上書きされないで済む

こんな風に「あったらマズイ」ときと「あったら便利」なときにも使える

イベントには以下リンク先のモノがある(全てではありません)

ワークシートに対するイベント/Excel マクロ
https://docs.google.com/spreadsheet/ccc?key=0Aq3SC7WlgWhMdHg2TGxGcnAzVXZ0cV9YSUtoVWRtWUE&usp=sharing

ブックに対するイベント/Excel マクロ
https://docs.google.com/spreadsheet/ccc?key=0Aq3SC7WlgWhMdEVBM3JaRGhiZlRjVWRaUHdCdjVZN2c&usp=sharing

書き方は、まずコードウィンドウでオブジェクトモジュールをダブルクリックで選択する

すると下画像の様なウィンドウになる
d0285354_2254519.jpg

左のセレクトボタンでWorksheetを選択すると、右のセレクトボタンに候補がでるので、そこから選択すればベースを打ち込んでくれる

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub


この書式がデフォで、最初から引数Targetまで用意してくれてる

Targetはともかく、書式に関してはこれじゃないとダメみたいですね

ちなみにイベントプロシージャ内で、イベントを起こさせたくない部分にはEnableEvensを使います

Application.EnableEvents = False
命令
Application.EnableEvents = True


イベントに関してはもう少し裏がありそうだけど、そんなに追及するとこじゃないのでこの程度でよし

あと一つ言うなら、イベントはオブジェクトモジュールでないと使えない

更にブックのイベントはオブジェクトモジュール内の「ThisWorkbook」モジュールでしか使えない

イベントプロシージャは乱用するととんでもない事になりかねないから、ほどほどにしようね。


オサムシじゃーなる
[PR]
by 03musi | 2013-02-11 22:55 | 試験メモ/VBAエキスパート


カテゴリ
試験メモ/VBAエキスパート
マクロ 基礎
マクロ 応用
Excel 基礎
Excel 応用
Office
日記
もくじ

ファン

フォロー中のブログ
初心者のためのOffic...
七里ヶ浜だより Lett...
はじめてのMac-Sup...
初心者のためのOffic...

検索

タグ

その他のジャンル