| |||
1 イベントプロシージャイベントプロシージャとは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 書き方は、まずコードウィンドウでオブジェクトモジュールをダブルクリックで選択する すると下画像の様なウィンドウになる ![]() 左のセレクトボタンでWorksheetを選択すると、右のセレクトボタンに候補がでるので、そこから選択すればベースを打ち込んでくれる Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub この書式がデフォで、最初から引数Targetまで用意してくれてる Targetはともかく、書式に関してはこれじゃないとダメみたいですね ちなみにイベントプロシージャ内で、イベントを起こさせたくない部分にはEnableEvensを使います Application.EnableEvents = False 命令 Application.EnableEvents = True イベントに関してはもう少し裏がありそうだけど、そんなに追及するとこじゃないのでこの程度でよし あと一つ言うなら、イベントはオブジェクトモジュールでないと使えない 更にブックのイベントはオブジェクトモジュール内の「ThisWorkbook」モジュールでしか使えない イベントプロシージャは乱用するととんでもない事になりかねないから、ほどほどにしようね。 オサムシじゃーなる ▲
by 03musi
| 2013-02-11 22:55
| 試験メモ/VBAエキスパート
1 | |||
ファン申請 |
||