- Excel でボタンでマクロを実行する際、似たような機能のボタンなら同じ Sub プロシージャを引数を変えて呼び出したい。
一応できる
ボタンにマクロを登録する際、似たような機能のボタンは同じ Sub プロシージャに引数だけ変えて登録できたら便利なのだけど、現状の マクロの登録 にはそのような機能はなさそうだし、そもそも引数がある Sub プロシージャはマクロ名のリストに出てこない。
でも マクロ名 のところに以下のように書けば、リストには表示されてない引数ありのプロシージャでも引数を渡して実行できる。要は 引数も含めて全体をシングルクォーテーションで囲めばいいいだけ。2つ以上の引数もカンマで連ねられる。
'プロシージャ名 引数, 引数, ...'
けどなんか、うーん?
リストにない物を強引に呼ぶのは悪い予感しかしないものの、一旦は喜んだのだけど、あとでそのファイルを開いてみたところ、見たことのない警告が出て、引数付きのマクロボタンは動作しなくなった。
.xlsm ファイルを初めて開いた際などの「マクロが無効にされました」の警告とは違って コンテンツの有効化 みたいなボタンもないので警告を無視して動かすという事もできない。試しに引数付きのマクロ登録をやめてみたら警告は出なくなった。
上記の参考サイトや、同じ手法を紹介してるサイトでは誰もこんな警告には触れてなかったので、最近になって 「やっぱこれ悪用できちゃうからセキュリティ警告しようぜー」 って事になったのかね?
トラストセンターの「信頼できる場所」などでなら一応動作はするけど気持ち悪いし、まあどう見ても公認の手法とは思えないので使わない方がよさそうすね。
結果的には僕がやろうとしてた事はマクロの引数を使わずとも実現できたのでこれ以上は追及しなかったけど、他に手法がないか少し探してみたところ、マクロを呼び出したボタンのオブジェクトと、そのボタンの名前やセルを知る方法 はあるようなので一応紹介だけ。それと別記事にしたけど、ハイパーリンクでマクロを呼ぶ方法。