• ベストアンサー

UserFormをサブルーチンに出来るか

頓珍漢な質問かもしれませんが、何分ご了承下さい。 標準モジュールで記述時、UserFormをサブルーチンとして呼び出す事は出来ないですか。 プログラムの途中に、複数項目を入力させたいのです。 InputBoxは一つしか入力させられない様だから、UserFormならと、思ったのですが。 Private付プロシージャは、同じモジュールのプロシージャからしか呼び出せないのでしょうか。 宜しくお願い致します。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

>プログラムの途中に、複数項目を入力させたいのです。 この行の期待していることが読み取れません。 もう少し具体的な例を示して説明すれば コメントを得られるだろうと思います・ さて、... >Private付プロシージャは、 >同じモジュールのプロシージャからしか呼び出せないのでしょうか。 はい、呼び出せません。 Privateがその目的で使うコードですから。 '======= UserForm1 のコード Sub BBB()  MsgBox ("AAA") End Sub '======= Module1 のコード Sub test()  UserForm1.BBB End Sub といった記述をすれば、 標準モジュールのコードから Userform内のプロシジャーを呼び出せますが 一般にはやらないと思います。 私は、 formモジュール内では、イベントを拾うためのコードのみを 記述するようにしています。 '======= UserForm1 のコード Private Sub CommandButton1_Click()  kogehoge1 End Sub Private Sub OptionButton1_Click()  kogehoge2 End Sub '======= Module1 のコード Sub hogehoge1()  '諸々のコード1 End Sub Sub hogehoge2()  '諸々のコード2 End Sub といったカンジです。 これにより、 コードたちが1か所に集まるので読みやすくなると思っています。

noname#233045
質問者

お礼

有難うございまし

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

標準モジュールのプロシージャからUserFormのテキストボックスの値を取り出したいということでしょうか。 でしたら(テキストボックスの名前がTextBox1なら) UserForm.TextBox1.Text が値になります。 また UserForm.Show でUserFormが表示されます。

noname#233045
質問者

お礼

有難うございます