こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

頓珍漢な質問かもしれませんが、何分ご了承下さい。

標準モジュールで記述時、UserFormをサブルーチンとして呼び出す事は出来ないですか。

プログラムの途中に、複数項目を入力させたいのです。
InputBoxは一つしか入力させられない様だから、UserFormならと、思ったのですが。

Private付プロシージャは、同じモジュールのプロシージャからしか呼び出せないのでしょうか。

宜しくお願い致します。

投稿日時 - 2018-06-29 15:42:15

QNo.9513412

暇なときに回答ください

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

>プログラムの途中に、複数項目を入力させたいのです。
この行の期待していることが読み取れません。
もう少し具体的な例を示して説明すれば
コメントを得られるだろうと思います・

さて、...
>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か所に集まるので読みやすくなると思っています。

投稿日時 - 2018-06-29 21:22:30

お礼

有難うございまし

投稿日時 - 2018-09-02 18:27:19

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2018-06-29 22:11:04

お礼

有難うございます

投稿日時 - 2018-09-02 18:27:04

あなたにオススメの質問