- ベストアンサー
エクセルでフォームのキャプションを取得したいのですが・・・
ユーザーフォーム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を表示させる。 取り急ぎ乱文ですが宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 あまり深く考えていませんので、簡単な方法ですが、 標準モジュールに、パブリック変数を置き、 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
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
#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
お礼
上手くいきました。 有難うございました。
- ko_kinta
- ベストアンサー率39% (43/109)
> UserForm2.Caption = UserForm1.ActiveControl.ControlTipText これでユーザーフォーム2のタイトルバーキャプションはきちんと設定できましたよ。 ちゃんとユーザーフォーム2のUserForm_Initialize()に上記コードを記述してますか? 間違いないならば、このコードにブレイクポイントを貼って、実行前と後のControlTipTextとUserForm2.Captionの値を確かめたらどうでしょう。
お礼
有難うございます。 何が悪かったのかよくわからないのですが 今日になって急に上手くいきました。 昨日のファイルから何もさわっていないので 再起動で解決したような感じです。 お騒がせしてすみませんでした。 以後、同じような時には再起動まで確認してから 質問するように気を付けたいと思います。
お礼
有難うございます。 何が悪かったのかよくわからないのですが 今日になって急に上手くいきました。 昨日のファイルから何もさわっていないので 再起動で解決したような感じです。 お騒がせしてすみませんでした。 以後、同じような時には再起動まで確認してから 質問するように気を付けたいと思います。