Witheventsについて

Witheventsキーワードを使用すると、変数オブジェクトでイベントの作成が可能になります。最強説があります

イベント処理において、「Withevents」キーワードは最強です
身も蓋も後述していきますが、マジ最強伝説です

このキーワードは変数の宣言時に使用します

Dim WithEvents エクセル As Excel.Application

このコードの様に変数名の前に挿入します
このコードではExcelを代入する変数の宣言になります
このコードに関しては以下の記事に詳しく解説しています

Excelのイベントを使用する場合には必須のキーワードです
なので、主に使用される場面もこの使用場面になります

ですが、このキーワード最強伝説はイベント処理の対象を動的に変更できる点です

「UserFormでコントロールの動的新規作成は行ったはいいけど、それに処理が組み込めないなら意味無いやん」

「使いましょう、Withevents」

「ワークシートに埋め込みのコントロール、チェックボックスなどを大量に作成したけど全てのコントロールのイベントに同じ処理を作成すると、作成も大変だし、修正があったときはもっと大変やん」

「使いましょうよ、Withevents」

「シートイベントで、見積書などの入力補助処理を作成しました
原紙からコピー追加でシートが増えていきますが、シートイベントも同時にコピペされるので作成は問題ありませんでした、でも修正があって、シート作りすぎてて大変やん」

「もう使ったら、ええやん!Withevents」

くどいので、これ以上はあげませんが
要はイベントが複製される場合、処理中に作成したオブジェクトに対してイベントを作成する場合、これらに使用することができます

また、プロは嫌うかもしれませんが、通常のシートイベントなどをUserFormモジュールにまとめて作成することもできます
処理をまとめることは、メリットもデメリットもあります
メリットの方が大きい場合もあるので利用できます

記事上部のリンクにある「Excelイベントの作成方法」記事内で解説していますが、コードを入力するだけでイベントの作成が可能なのもいいよね

変数を解放すればイベントが発生しなくなるので、UserFormのコントロール系であればイベント無効を応用的に作成できるのもいいよね

やっぱイベント処理において、Witheventsキーワード最強です

ただ、このキーワードで作成出来るイベントはExcelイベント以外は全てのイベントを作成できない点には注意が必要です
作成出来るイベントの中で処理を考えましょう

そうです、全て完璧な存在より少し欠点があるくらいが愛嬌もあるというやつなので、これを弱点とは捉えなくていいんです
コーヒーにチョコレート!
からあげと餃子にビール!
悟空とベジータにポタラ!
イベント処理にWithevents!みんな最強や!