Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11452 / 13645 ツリー ←次へ | 前へ→

【15956】自分を呼びだしたフォームを知るには 俺は何処から来たのか 04/7/13(火) 14:49 質問[未読]
【15962】Re:自分を呼びだしたフォームを知るには IROC 04/7/13(火) 15:51 回答[未読]
【15979】Re:自分を呼びだしたフォームを知るには [名前なし] 04/7/13(火) 21:05 回答[未読]
【15997】Re:自分を呼びだしたフォームを知るには 俺は何処から来たのか 04/7/14(水) 10:04 質問[未読]
【15998】Re:自分を呼びだしたフォームを知るには IROC 04/7/14(水) 10:06 回答[未読]
【16003】Re:自分を呼びだしたフォームを知るには ichinose 04/7/14(水) 11:36 発言[未読]
【16029】Re:自分を呼びだしたフォームを知るには 俺は何処から来たのか 04/7/14(水) 16:51 お礼[未読]

【15956】自分を呼びだしたフォームを知るには
質問  俺は何処から来たのか  - 04/7/13(火) 14:49 -

引用なし
パスワード
   幾種類かのフォーム上にボタンを配置し、クリックすると
FormXが開くようにしているのですが、
FormX内のプロシージャーで呼び出しフォームによって
異なる処理をしたいと思っています。

そのためには、自分を呼びだしたフォームを呼び出された
フォーム側で知る方法がわからないといけないのですが、
そのような方法をご存知の方、お教えください。

【15962】Re:自分を呼びだしたフォームを知るには
回答  IROC  - 04/7/13(火) 15:51 -

引用なし
パスワード
   グローバル変数をフラグにしては如何ですか?

【15979】Re:自分を呼びだしたフォームを知るには
回答  [名前なし]  - 04/7/13(火) 21:05 -

引用なし
パスワード
   呼び出し側のフォームで、FormXのTagプロパティに名前をセットして

 FormX.Tag = Me.Name
 FormX.Show

FormXフォーム側でMe.Tagで判別するとか。

 Select Case Me.Tag
 Case "UserForm1"
  ・
  ・
  ・

【15997】Re:自分を呼びだしたフォームを知るには
質問  俺は何処から来たのか  - 04/7/14(水) 10:04 -

引用なし
パスワード
   ありがとうございます。

確かに、
FormX.Tag = Me.Name
FormX.Show
とすると、FormXのモジュールで呼び出し側の
フォーム名が得られました。

しかし、FormXのモジュール内で、呼び出し側の
フォームをオブジェクトとして、呼び出し側フォーム
上のコントロールのプロパティに値を設定したり
できませんでした。

例えば、FormX内で、

Set SS= FormX.Tag
SS.TextBox1 = "1234"

ということがませんでした。
つまり、オブジェクトの名称を得て、
それをオブジェクトとして認識させる方法があれば
お教えください。
よろしくお願いします。


▼[名前なし] さん:
>呼び出し側のフォームで、FormXのTagプロパティに名前をセットして
>
> FormX.Tag = Me.Name
> FormX.Show
>
>FormXフォーム側でMe.Tagで判別するとか。
>
> Select Case Me.Tag
> Case "UserForm1"
>  ・
>  ・
>  ・

【15998】Re:自分を呼びだしたフォームを知るには
回答  IROC  - 04/7/14(水) 10:06 -

引用なし
パスワード
   ・・・グローバル変数を使っては如何ですか?

【16003】Re:自分を呼びだしたフォームを知るには
発言  ichinose  - 04/7/14(水) 11:36 -

引用なし
パスワード
   ▼俺は何処から来たのか さん:
こんにちは。

>ありがとうございます。
>
>確かに、
>FormX.Tag = Me.Name
>FormX.Show
>とすると、FormXのモジュールで呼び出し側の
>フォーム名が得られました。
>
>しかし、FormXのモジュール内で、呼び出し側の
>フォームをオブジェクトとして、呼び出し側フォーム
>上のコントロールのプロパティに値を設定したり
>できませんでした。
>
>例えば、FormX内で、
>
>Set SS= FormX.Tag
>SS.TextBox1 = "1234"
>
>ということがませんでした。
>つまり、オブジェクトの名称を得て、
>それをオブジェクトとして認識させる方法があれば
>お教えください。
>よろしくお願いします。
>
>
>▼[名前なし] さん:
>>呼び出し側のフォームで、FormXのTagプロパティに名前をセットして
>>
>> FormX.Tag = Me.Name
>> FormX.Show
>>
>>FormXフォーム側でMe.Tagで判別するとか。
>>
>> Select Case Me.Tag
>> Case "UserForm1"
>>  ・
>>  ・
>>  ・

基本的には、[名前なし] さんの手法に賛成です。FormXの結合度が弱そうだから・・。

Tagプロパティで問題があるならば、独自プロパティをFormXに作成しては?
FormXのモジュールに
Public caller_form As Object

等と宣言しておいて

呼び出しフォームでは
with FormX
    Set .caller_form = Me
   .Show
   End With
なんていうコード

すると
FormXでは、
MsgBox caller_form.TextBox1.Text
なんてコードが作動します。

【16029】Re:自分を呼びだしたフォームを知るには
お礼  俺は何処から来たのか  - 04/7/14(水) 16:51 -

引用なし
パスワード
   ichinoseさんの通りにやったら、思ったとおり
できました。
どうもありがとうございました。

▼ichinose さん:
>
>基本的には、[名前なし] さんの手法に賛成です。FormXの結合度が弱そうだから・・。
>
>Tagプロパティで問題があるならば、独自プロパティをFormXに作成しては?
>FormXのモジュールに
>Public caller_form As Object
>
>等と宣言しておいて
>
>呼び出しフォームでは
>with FormX
>    Set .caller_form = Me
>   .Show
>   End With
>なんていうコード
>
>すると
>FormXでは、
>MsgBox caller_form.TextBox1.Text
>なんてコードが作動します。

11452 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free