コマンドボタンから呼び出すメソッドはPrivete指定で良い

Priveteメソッドでもコマンドボタンから呼び出すことができる

常識ですか?

私は存じ上げませんでしたので、今まで何でもかんでもPublic指定にしていた。

そのせいで、「マクロの登録」ウインドウなんかを開くと、

f:id:akashi_keirin:20190617072247j:plain

こんなひどい有様にw

Privete指定のメソッドを作成する

実験用なので、なげやりなメソッドにする。

リスト1 標準モジュール
Private Sub showMessage()
  Call MsgBox("ち~んw")
End Sub

f:id:akashi_keirin:20190617072250j:plain

何のことはない、単に「ち~んw」というメッセージを表示するだけのメソッド。

コマンドボタンに登録する

このメソッドをワークシート上のコマンドボタンに登録する。

ボタンを右クリックして[マクロの登録]を選択する。

f:id:akashi_keirin:20190617072253j:plain

Privete指定ゆえ、当然この欄には出てこない。

仕方がないので、手打ち。

f:id:akashi_keirin:20190617072256j:plain

一応モジュール名から入力しているけれど、プロジェクト内で名前の重なりがなければメソッド名だけでもオッケー。

実行テスト

f:id:akashi_keirin:20190617072301g:plain

このとおり、ちゃんと呼び出せている。

おわりに

標準モジュールのアクセス修飾子には「Public」/「Privete」という両極端の二つしかないため、なかなか扱いづらいのだけれど、少なくともコマンドボタン等から呼び出すものについてはPublicにせずに済むことがわかった。これでまた一つ、オレオレコーディング規約に新たな項目が加わった。