• ベストアンサー

VBAモジュール

いつもお世話になります。 1点目・これは、Private Sub を見やすくするため、とりあえず、モジュールに入れとけ、という使い方でいいのでしょうか。 2点目 下記うまくいきません。 Private Sub 消去 End Sub モジュールに sub 消去() テキスト数量 = "" (テキスト数量はテキストボックス) End Sub これってやっぱり、モジュールの使い方が間違っているのでしょうか?まあ~間違ってるから動かないんでしょうけど・・・モジュールについて解説と使用方法を教えて頂きたいです。 2点目の解決方法はPrivate Subにテキスト数量 = ""するしかないのでしょうか、消去の数・箇所(同じもの)が多いので、できれば何処かに纏めたいのです。こちらもお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

>1点目・これは、Private Sub を見やすくするため、とりあえず、モジュールに入れとけ、という使い方でいいのでしょうか。 可能ですが、やってはダメです。 フォームに固有の処理(テキストボックスに値を設定する等)はフォーム内に記述しましょう。 汎用的に使える処理(例えば、何らかの金額の計算処理など)はモジュールに入れればいいかもしれません。(ソフトの作り方次第では、クラスモジュールに入れなければならないかもしれません。) フォーム内のPrivate Sub を見やすくするためには、同じフォーム内にもう一個 Private Sub を作成すればいいでしょう。 >2点目 下記うまくいきません。 sub 消去() フォームの名称.テキスト数量 = ""  End Sub とすべきでしょう。 複数のフォームetcに「テキスト残量」がある場合があるので。 先に書いたように、フォーム外のモジュールで、個々のフォーム内のテキストボックス等を直接操作するのは、あまり行儀のいいやり方ではありません。

keiri2002
質問者

お礼

御礼が遅くなりすいません。 解決しました。 有難うございます。

その他の回答 (1)

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.2

2点目 >Private Sub >消去 >End Sub > >モジュールに >sub 消去() >テキスト数量 = "" (テキスト数量はテキストボックス) >End Sub 複数のフォームがあり全てのフォームがほぼデザインが同じでテキストボックスの名称を同じにしているのであれば以下のようにしてみては如何でしょうか。 ※こんな造りは、本当にあまりよろしくないと思います。 Private Sub   Call 消去(Me) '(*1) End Sub *1:Subを呼ぶ時は、見やすくするためにCallを記述した方が良いでしょう。 Public Sub 消去(frm as Form)   frm.テキスト数量 = "" (テキスト数量はテキストボックス) End Sub 解説:どのフォームのテキストボックスなのかを知らせる為に、フォームオブジェクトを渡します。

keiri2002
質問者

お礼

御礼が遅くなりすいません。 解決しました。 有難うございます。

関連するQ&A