• ベストアンサー

フォームのテキストボックスなどの変数名を標準モジュールから参照は可能か?

フォームのテキストボックスなどの変数を標準モジュールの関数から参照する方法を教えてください。 お願いします。

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

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

>test(form1.Text1.Text) > >Public Function test(コントロール変数パラメータ) > >コントロール変数パラメータ=値を代入 > >End Fuction 可能ですよ。サンプルです。試してみてください。 まず、フォームと標準モジュールを準備してください。 フォーム: Form[Form1]にTextbox[Text1]とCommandButton[Command1]を配置してください。 ([]内は、オブジェクト名です。) Private Sub Command1_Click()   Call test(Text1) End Sub 標準モジュール: Public Function test(txt As TextBox)   txt.Text = "aaa" End Function CommandButtonを押すと、Textboxに”aaa”と表示されます。 ※Public Function test(txt As ****)の****は、 「Textbox」又は「Object」又は「Control」 いずれでもOKです。 例: Public Function test(txt As Textbox) Public Function test(txt As Object) Public Function test(txt As Control) この辺りは、人それぞれになると思いますが・・・。

soushi_ni
質問者

お礼

遅れてすみませんでした。 おかげさまで、VB初心者ながら、よい開発が出来たと思います。本当によい経験をしたと思っています。助かりました。ありがとうございました。

その他の回答 (3)

  • kagep
  • ベストアンサー率23% (171/721)
回答No.3

#2の方の答えでほぼパーフェクトなんですが、助言です。 標準モジュール内に作成した、Public宣言されているプロシージャでの処理に 必要となる値を入手したい、ということならば、 フォームモジュール内のオブジェクトの値を直接見に行くのではなく、 プロシージャを呼び出すときに、引数として呼び出し側から明示的に渡しましょう。 #2の方も触れていますが、もしLoadされていないフォームの中の値を参照しようとすると、 フォームは暗黙的にLoad、つまり起動してしまいます。 これに気がつかないでいて、あとあとバグの原因になってしまうことも少なくないです。 異なるモジュール間での値のやり取りは、きちんと入り口と出口を定めて、 決められたルールの中で限定的に行うべきです。 こうしておかないと、絶対管理できなくなってしまいます。 あとあとソースを追って・・・ということが難しくなるわけですね。 特に第3者には。 という助言でした。

soushi_ni
質問者

補足

ご教授ありがとうございます。 今回の質問と路線はずれますが、コントロール系の変数名をpublic関数等にパラメータを渡して、その取得パラメータでコントロール系の変数を参照するにはどうすればよいのでしょうか? 例) test(form1.Text1.Text) Public Function test(コントロール変数パラメータ) コントロール変数パラメータ=値を代入 End Fuction これが可能であればかなり処理は楽なのですが・・・ ど素人ながらの質問です。

  • jincyan
  • ベストアンサー率36% (4/11)
回答No.2

先の回答でTextboxにCaptionプロパティはありませんのでTextプロパティが正解です。 標準モジュールだけでなく別のFromから参照する場合もフォーム名に!(或いは.)を前に付けてやれば参照できます。(但しLoadされていないフォームのオブジェクトを参照するとLoadされますが・・) From1!TEXT1.TEXT 或いは Form1.TEXT1.TEXT でいいのでは

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

明示的にNew等で作られていないFormは、暗黙的にフォーム名と同じ名前でオブジェクトが作成されています。 Form1というフォームのText1というテキストボックスのCaptionプロパティを参照したい場合は、 Form1.Text1.Caption という記述になります。

関連するQ&A

専門家に質問してみよう