
No.1ベストアンサー
- 回答日時:
自動的に作られるイベントプロシージャは「Private」指定ですから、
Formの外からは参照できません。
「Public」に変更すれば、外部から参照可能になります。
#「イベントプロシージャを外部から直接呼び出す」という
#プログラムが良いかどうかの議論は止めておきます。
ありがとうございます。
できました。
Form1に
Private Sub Command1_Click()
Form2.Show
Call Form2.Command1_Click
End Sub
Form2に
Public Sub Command1_Click()
Command1.Enabled = False
End Sub
と入れて「他のモジュールのプロシージャの呼び出したい。」が確認できました。
初心者の質問で申し訳ないのですが、
”#「イベントプロシージャを外部から直接呼び出す」という
#プログラムが良いかどうかの議論は止めておきます。”
とコメントいただきましたが、フォーム間でプロシージャのやり取りをするには本来どういった方法で行うのがいいでしょうか?
もしよろしければ、ご助言お願いいたします。
No.4
- 回答日時:
#1です。
> フォーム間でプロシージャのやり取りをするには本来どういった
> 方法で行うのがいいでしょうか?
プロシージャのやり取り(呼び出し)自体は構わないと思います。
但し、本来Priveteであるべき(Form1の内部処理である)「イベントプロシージャ」を直接呼び出すのはちょっと・・・
という事です。
これは、#2さんが言われている様に、
他の画面からも行いたい処理は、別に「公開用(共通処理)」として用意しておくのが良いと思います。
Form1に依存する動作が多い(Form1の複数のコントロールのプロパティ等を参照・操作するとか)なら、Form1内に用意し、
それほど依存しないなら、標準モジュールで用意します。
余談ですが、『「CommanButtonのClickイベント」を発生させる』事に限定するなら、
Form1.Comman1.Value=True
を実行することで、発生させることも可能です。
ありがとうございます。
あくまで例として今回CommandButtonを用いていましたが、
プロシージャのやり取りは使われているんですね。
Form1.Comman1.Value=True
という使い方も知りませんでした。
今後活用させていただきます。
No.3
- 回答日時:
回答というより、確認に近いかもしれませんがForm1、Form2はそれぞれクラス名、インスタンス名のどちらでしょうか。
質問の内容からすれば、なんとなくForm1、Form2がクラスのように感じるのですが。もしそうでなければ聞き流してください。Form1、Form2をクラスと考えているなら、Form2.Command1_Clickというような呼び出しは、共有メソッドにしか使用することはできません。
ただし、Command1_Clickはおそらくハンドラなので、共有メソッドではないはずです。
たとえば、
Class Form1
Dim f2 as Form2
Sub asdf()
f2.Command1_Click(f2.Command1,new System.Eventargs())
End Sub
End Class
というような構造になっていなければ呼び出せません。
この回答への補足
すみません。初心者であまりよくわかっていないです。
VBを立ち上げて最初にあらわれるForm1というものを指して表現しているのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
VB.netで標準モジュールからフォームを呼び出す
Visual Basic(VBA)
-
-
4
【VB6.0】 あるフォームから他のフォームへ値を受け渡したい
Visual Basic(VBA)
-
5
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
任意のフォームが表示されているかを知りたい
Visual Basic(VBA)
-
8
VBからEXCELのセルの値を取得する方法
Visual Basic(VBA)
-
9
【VB】タブ切り替え時のイベント
Visual Basic(VBA)
-
10
プロシージャからイベントをコールする
Visual Basic(VBA)
-
11
VBのフォームモジュールと標準モジュールの使い分け
Visual Basic(VBA)
-
12
VB6で開発中…標準モジュール間での関数の呼び出し方は?
Visual Basic(VBA)
-
13
フォームを開く時のイベント処理
Visual Basic(VBA)
-
14
なかなか、Zオーダーが理解できません。
Visual Basic(VBA)
-
15
VB6.0で、DLLを動的に参照したい
Visual Basic(VBA)
-
16
VB6のプロジェクトロードエラーについて
Visual Basic(VBA)
-
17
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
18
Application.Runエラー(1004)
Excel(エクセル)
-
19
vba userFormのSubを標準モジュールから呼び出す方法を教えてください
Visual Basic(VBA)
-
20
VBA[Private Sub]のコードをシート上の図形に登録する方法を教えて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
WPFでCanvas の子要素にアクセ...
-
実行時エラー 438になった時の...
-
VBA シートのボタン名を変更し...
-
worksheetFunctionクラスのVloo...
-
EXCELでactivexコントロールを...
-
「Columns("A:C")」の列文字を...
-
ユーザーフォームを表示中にシ...
-
ウォッチ式の文字数制限について
-
VBAでオプションボタンによって...
-
Excel VBA Application.caller...
-
【C#/Java?】try-catchでcatch...
-
ExcelVBAのユーザーフォームの...
-
Microsoft Formsの「個人情報や...
-
'ckbl' コントロールは作成され...
-
VBA(エクセル)で自動的にボタン...
-
ExcelVBAでListViewが使用できない
-
テキストボックス中の文字列の...
-
エクセルのVBAの標準モジュール...
-
実行時エラー3001「引数が間違...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
他のモジュールのプロシージャ...
-
VB.netで、動的な型変換を行い...
-
Excel vbaで複数のテキストボッ...
-
現在使用しているJAVAファイル...
-
WPFでCanvas の子要素にアクセ...
-
用語の意味の違いを教えてくだ...
-
VisualBasicへの取っ付き辛さ。...
-
VB.NETにて文字列で指定した関...
-
Visual-C#の event キーワー...
-
Python クラスとモジュールの...
-
Android / 型変数へのバインド?
-
【iOS】TextFieldでテキスト入...
-
Form1に記述されたスクリプトを...
-
C# Process.Start で標準入力
-
ExcelVBAでJavaのHashtableのよ...
-
VBA クラスにプロパティが実装...
-
VBAで、Functionを、クラスモジュール...
-
シーケンス図について。
おすすめ情報