|
▼のぶ さん:
こんばんは。
>
>>このボタンとは、どんなボタンですか?
>ボタンは2の通りです。
>>2 ツールバー「コントロールツールボックス」のコマンドボタンを
>>シートに配置したもの
>>
まず、上記のボタンであれば、イベントプロシジャー
(Private Sub CommandButton1_Click() )
にコードを記述しているはずです。
これは、オブジェクトモジュール(ここでは、シートモジュール)
でないと、記述できません。
また、コードの内容もこのシートに深く関わっている内容であれば、
当該シートモジュールにコードを記述することが適切だと
思いますけどね!!
>最近全く知らない人が作ったVBAを見る機会があり、標準モジュールだけを使用し
>すっきりしたプログラムに見えたからです。
モジュールを分割することがイコール すっきりしていないとは
思いませんが・・・。
>得にメリットが無ければ、そのままで行こうと思いますが、どうなのでしょうか?
先に記述したようにあくまでも
コードの内容もそのオブジェクトに深く関わっている内容だと判断した場合ですが、
シートモジュール(というより、オブジェクトモジュール)
に私がコードを置く場合の大きな理由は外部(別のブック)からの呼び出しが簡単だという理由があります。
その呼び出す際にもSheet1.Testなんて、記述をする(しないと特定できない)ので
手続きが分かりやすいということもあります。
(標準モジュールだって、Module1.test という記述は出来ますが、
test1でも動作しますからね!!)
デメリットでよく見かけるのは、シートにコードを記述すると、
シートをコピーした場合は、コードまでコピーされてしまいます。
コピー先では、コードが要らない場合は、シートモジュールに
コードがあると厄介ですよね!!
どちらが良いかは、目的のプログラムが何なのかによりますよ!!
で、標準モジュールにコードをどうしても記述したいなら、
前投稿で申し上げたように
1のボタンを使うと可能になります。
どちらのボタンが良いかという問題も一長一短あります。
2の「コントロールツールボックス」のボタンだとコードは、
オブジェクトモジュール(シートモジュール)にしか記述できませんが、
1の「フォーム」のボタンなら、標準モジュールでもシートモジュールでも
記述できます。
加えて、フォームのボタンのほうがExcelとの相性も良いようです。
(ボタンの動的な作成にも耐えうるようです)
しかし、「コントロールツールボックス」のボタンは、
後で追加された機能だけあって、
フォームのボタンでは実現できない機能も備えています
(ボタンの色や画像の指定など)し、
イベントも細かく設定できます。
やりたいことによって、使い分ける必要はあると思いますよ!!
(個人的には、ボタンに限って言えば、フォームのボタンのほうが使用頻度が
高いかなあ・・・)。
|
|