Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


34108 / 76732 ←次へ | 前へ→

【47839】Re:シートモジュールと標準モジュール
発言  ichinose  - 07/3/23(金) 20:19 -

引用なし
パスワード
   ▼のぶ さん:
こんばんは。

>
>>このボタンとは、どんなボタンですか?
>ボタンは2の通りです。
>>2 ツールバー「コントロールツールボックス」のコマンドボタンを
>>シートに配置したもの
>>
まず、上記のボタンであれば、イベントプロシジャー
(Private Sub CommandButton1_Click() )
にコードを記述しているはずです。
これは、オブジェクトモジュール(ここでは、シートモジュール)
でないと、記述できません。

また、コードの内容もこのシートに深く関わっている内容であれば、
当該シートモジュールにコードを記述することが適切だと
思いますけどね!!


>最近全く知らない人が作ったVBAを見る機会があり、標準モジュールだけを使用し
>すっきりしたプログラムに見えたからです。

モジュールを分割することがイコール すっきりしていないとは
思いませんが・・・。

>得にメリットが無ければ、そのままで行こうと思いますが、どうなのでしょうか?

先に記述したようにあくまでも
コードの内容もそのオブジェクトに深く関わっている内容だと判断した場合ですが、
シートモジュール(というより、オブジェクトモジュール)
に私がコードを置く場合の大きな理由は外部(別のブック)からの呼び出しが簡単だという理由があります。

その呼び出す際にもSheet1.Testなんて、記述をする(しないと特定できない)ので
手続きが分かりやすいということもあります。
(標準モジュールだって、Module1.test という記述は出来ますが、
test1でも動作しますからね!!)


デメリットでよく見かけるのは、シートにコードを記述すると、
シートをコピーした場合は、コードまでコピーされてしまいます。
コピー先では、コードが要らない場合は、シートモジュールに
コードがあると厄介ですよね!!

どちらが良いかは、目的のプログラムが何なのかによりますよ!!

で、標準モジュールにコードをどうしても記述したいなら、

前投稿で申し上げたように

1のボタンを使うと可能になります。

どちらのボタンが良いかという問題も一長一短あります。

2の「コントロールツールボックス」のボタンだとコードは、
オブジェクトモジュール(シートモジュール)にしか記述できませんが、

1の「フォーム」のボタンなら、標準モジュールでもシートモジュールでも
記述できます。

加えて、フォームのボタンのほうがExcelとの相性も良いようです。
(ボタンの動的な作成にも耐えうるようです)

しかし、「コントロールツールボックス」のボタンは、
後で追加された機能だけあって、
フォームのボタンでは実現できない機能も備えています
(ボタンの色や画像の指定など)し、
イベントも細かく設定できます。

やりたいことによって、使い分ける必要はあると思いますよ!!
(個人的には、ボタンに限って言えば、フォームのボタンのほうが使用頻度が
高いかなあ・・・)。

3 hits

【47820】シートモジュールと標準モジュール のぶ 07/3/23(金) 9:11 質問
【47822】Re:シートモジュールと標準モジュール ichinose 07/3/23(金) 9:33 発言
【47823】Re:シートモジュールと標準モジュール のぶ 07/3/23(金) 9:40 お礼
【47839】Re:シートモジュールと標準モジュール ichinose 07/3/23(金) 20:19 発言
【47851】Re:シートモジュールと標準モジュール inoue 07/3/24(土) 13:49 発言

34108 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free