VBA イベントプロシージャーを外部から呼び出す方法

例えばコマンドボタンのClickイベントプロシージャーに記述した処理を標準モジュールなどから再利用できたら便利なのに、と長年思いつつ、できないものと思い込んでいました。しかし、できるんです。しかも、とても簡単に。
イベントプロシージャーはデフォルトではPrivateになっていますが、それをPublicに変更します。
後は、イベントを参照してあげるだけです。
ユーザーフォームのイベントプロシージャーの場合は、
[フォーム名].[コントロール名].[イベント名]
例えば、
Call Userform1.CommandButton1.Click
ワークシートの場合は、
[ThisWorkbook].[シート名].[イベント名]
例えば、
Dim rng as Range: Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1")
Call ThisWorkbook.Sheets("Sheet1").Worksheet_Change(rng)
このように書くだけです。
ついさっき、他の人の作ったVB6ソフトを改修している時に、初めて知りました。
実用的な使い方はすぐに思いつきませんが、いざと言うときには役に立つでしょう。