関数を呼ぶときは、
Public Sub hogehoge(objForm As Form)
関数をこんな感じにして
Call hogehoge(Me)
こう呼んでいるのですが、複数のformがあって
showさせたときにどのフォームから呼ばれたのか
子formが知るにはどうすればいいのでしょうか?
呼び出したフォームのプロパティが
全て引数で渡されて来るので
呼び出す方で、
Me.Tagを設定しておけば
objForm.Tag
なんかで呼び出し側のFormが判ると
思うのですが。
ごめんなさい、分かりづらい書き方をしていました。
書き直します。
たとえば、frmAがあって、frmCommonをfrmCommon.Showとしたとき、
frmCommonの方がfrmAから呼ばれたことを知るにはどうすればいいのか?ということです。
一対一ならfrmCommonに直にfrmA.cmdHogehogeとか書けばいいのだけど、
呼び元が複数あるのでどのformから呼ばれているのかが分からないのです。
frmCommonのShowを他のFormから行わずに
自分でするように、
frmCommonの中に
Public Sub MeShow(s)
Me.Show
End Sub
等を作っておいて
呼び出す方は
Me.Tag = "1"(Caotionでも何でもいいけど)
frmCommon.MeShow (Me.Tag)
等とすれば呼び出し側のTagが渡るのでは。
ねろさんありがとうございます。
それはちょっと目からウロコです。
ところでformを丸ごと渡してやろうとしたのですが、★のところでエラーになります。
何がおかしいのでしょうか?
呼び出し元
Private Sub cmdExec_Click()
Call frmCommon.FormLoadMe(Me)
End Sub
共通フォーム(frmCommon)
Private objForm As Form
Private Sub Form_Load()
lblLabel1.Caption = objForm.txtLabel.Text
End Sub
Public Sub FormLoadMe(objFN As Form)
objForm = objFN ←★
Me.Show 1
End Sub
オブジェクトの割り当て方法が違います
Set objForm = objFN
とやります。
ああ!そういうことか〜。
ありがとうございます。
思い通りのことが出来ました。
ツイート | ![]() |