許せない心理テスト

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

A 回答 (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)
この辺りは、人それぞれになると思いますが・・・。
    • good
    • 2
この回答へのお礼

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

お礼日時:2002/08/13 00:13

#2の方の答えでほぼパーフェクトなんですが、助言です。



標準モジュール内に作成した、Public宣言されているプロシージャでの処理に
必要となる値を入手したい、ということならば、
フォームモジュール内のオブジェクトの値を直接見に行くのではなく、
プロシージャを呼び出すときに、引数として呼び出し側から明示的に渡しましょう。

#2の方も触れていますが、もしLoadされていないフォームの中の値を参照しようとすると、
フォームは暗黙的にLoad、つまり起動してしまいます。
これに気がつかないでいて、あとあとバグの原因になってしまうことも少なくないです。
異なるモジュール間での値のやり取りは、きちんと入り口と出口を定めて、
決められたルールの中で限定的に行うべきです。
こうしておかないと、絶対管理できなくなってしまいます。
あとあとソースを追って・・・ということが難しくなるわけですね。
特に第3者には。

という助言でした。

この回答への補足

ご教授ありがとうございます。
今回の質問と路線はずれますが、コントロール系の変数名をpublic関数等にパラメータを渡して、その取得パラメータでコントロール系の変数を参照するにはどうすればよいのでしょうか?

例)
test(form1.Text1.Text)


Public Function test(コントロール変数パラメータ)

コントロール変数パラメータ=値を代入

End Fuction

これが可能であればかなり処理は楽なのですが・・・
ど素人ながらの質問です。

補足日時:2002/08/02 10:54
    • good
    • 0

先の回答でTextboxにCaptionプロパティはありませんのでTextプロパティが正解です。


標準モジュールだけでなく別のFromから参照する場合もフォーム名に!(或いは.)を前に付けてやれば参照できます。(但しLoadされていないフォームのオブジェクトを参照するとLoadされますが・・)
From1!TEXT1.TEXT 或いは Form1.TEXT1.TEXT
でいいのでは
    • good
    • 0

明示的にNew等で作られていないFormは、暗黙的にフォーム名と同じ名前でオブジェクトが作成されています。



Form1というフォームのText1というテキストボックスのCaptionプロパティを参照したい場合は、

Form1.Text1.Caption

という記述になります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A