• ベストアンサー

エクセルでフォームのキャプションを取得したいのですが・・・

ユーザーフォーム1と2、二つのフォームがあります。 ユーザーフォーム1にテキストボックスが5つあったとして それぞれのテキストボックスにエンターしたときに ユーザーフォーム2を表示させるのですが、 そのときにテキストボックスのControlTipTextを ユーザーフォーム2のCaptionとして表示するには どうすればよいのでしょうか。 Private Sub UserForm_Initialize()で UserForm2.Caption = UserForm1.ActiveControl.ControlTipText としてみましたがだめでした。 例えばフォーム1上のテキストボックス1のControlTipTextが "AAAAA"だとして、テキストボックス1が選択されたとき(Enter)、 表示されたフォーム2のタイトルバーはAAAAAと表示。 同じ要領でテキストボックス2の場合はテキストボックス2の ControlTipTextを表示させる。 取り急ぎ乱文ですが宜しくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 あまり深く考えていませんので、簡単な方法ですが、 標準モジュールに、パブリック変数を置き、 Public Cntl_Tips As String  'これはひとつで良いでしょう。 ------------------------------------------- UserForm1 のテキストボックスのイベントで、変数に送り 'EnterKeyBehaviour =True 'Enter イベントは、挙動がおかしいので、以下に切り替え。 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then 'Enter   Cntl_Tips = TextBox1.ControlTipText   UserForm2.Show End If End Sub ------------------------------------------------- Userform2 のイニシァライズで、受ければよいと思います。 Private Sub UserForm_Initialize()  UserForm2.Caption = Cntl_Tips End Sub

Radar3
質問者

お礼

有難うございます。 何が悪かったのかよくわからないのですが 今日になって急に上手くいきました。 昨日のファイルから何もさわっていないので 再起動で解決したような感じです。 お騒がせしてすみませんでした。 以後、同じような時には再起動まで確認してから 質問するように気を付けたいと思います。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

#1 です。 できないと思って、別の方法を考えたわけですが、確かに、#2 さんのおっしゃるとおり、そのままでいけますね。 もし、問題があるなら、たぶん、その送り方でしょうね。 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then 'Enter   UserForm2.Show End If End Sub

Radar3
質問者

お礼

上手くいきました。 有難うございました。

  • ko_kinta
  • ベストアンサー率39% (43/109)
回答No.2

> UserForm2.Caption = UserForm1.ActiveControl.ControlTipText これでユーザーフォーム2のタイトルバーキャプションはきちんと設定できましたよ。 ちゃんとユーザーフォーム2のUserForm_Initialize()に上記コードを記述してますか? 間違いないならば、このコードにブレイクポイントを貼って、実行前と後のControlTipTextとUserForm2.Captionの値を確かめたらどうでしょう。

Radar3
質問者

お礼

有難うございます。 何が悪かったのかよくわからないのですが 今日になって急に上手くいきました。 昨日のファイルから何もさわっていないので 再起動で解決したような感じです。 お騒がせしてすみませんでした。 以後、同じような時には再起動まで確認してから 質問するように気を付けたいと思います。

関連するQ&A