• ベストアンサー

Form1に記述されたスクリプトをForm2のボタンクリックで実行させたい

おせわになります VBのVer.6使用しています Form1には仮に以下のような計算をする内容があるとします Private Sub testA() Text1.text = 10 Text2.text = 20 End Sub これをForm2のボタンをクリックすると実行するようにするにはどうしたらよいでしょうか? 上のPrivateをPublicにしても駄目でした 標準モジュールではオブジェクトがないのでエラーとなりました よろしくお願いします

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

  • ベストアンサー
noname#4564
noname#4564
回答No.3

現在はどんなコードになってますか? × Call testA() ○ Call Form1.testA() 'クラス名で修飾。 です。(当然、testAはPublicスコープで)

suntrading
質問者

お礼

ありがとうございました まさにこの方法です

すると、全ての回答が全文表示されます。

その他の回答 (3)

noname#4564
noname#4564
回答No.4

No.1の補足です。 VB6だとフォームは「暗黙のインスタンス化」があるので、コードで明示的にNewしなくても利用できる場合があります。 例えば、 Load Form1 Form1.Show と記述しなくても、 Form1.Show だけで、Form1を表示できます。 (ご質問のケースの Form1.testA の場合はテストしてないので、可能かわかりません)

すると、全ての回答が全文表示されます。
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 つまり、別のフォームのコントロールのプロパティを参照したいということでしょうか。 それなら、Form1がメモリに読み込まれているなら(Loadされていれば、HideになっていてもOK)、テキストボックスにフォーム名をつけて、 Form1.Text1.Text = 10 というように出来ます。 ちなみに、Form1がメモリから破棄されている(いわゆるUnload)場合は、そのコントロールのプロパティは参照出来ません。 また、もちろんテキストボックスの値などのプロパティ値は保持されません。 よって、フォームを閉じる場合は、標準モジュールでPublic宣言した変数にいったん格納しておき、その変数を代入するという手順になります。

すると、全ての回答が全文表示されます。
noname#4564
noname#4564
回答No.1

クラスのメソッド(プロパティ)は標準モジュールの関数とはライフサイクルが違い、 インスタンスが生成されてから破棄されるまでの寿命です。 ですので、フォームのインスタンスが「生きて」いるときしか利用できません。 プログラムの複数箇所で利用する汎用的な処理なら、フォームのクラスではなく、 標準モジュール、または独立した別のクラスに実装した方が賢明だと思います。

すると、全ての回答が全文表示されます。

関連するQ&A