[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームの切り替えでtextbox1にフォーカスを当てたい』(当てたい)
こんにちは。
userform1にコマンドボタンがあってボタンを押すと
userform1を閉じ、userform2が開きます。
この時userform2内にあるtextbox1にフォーカスをあてるにはどうしたらいいですか?
Private Sub UserForm_Activate()
'フォーカスする TextBox1.SetFocus End Sub を書いたのですがフォーカスされませんでした。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
参考HPです。
https://www.officepro.jp/excelvba/userform/index23.html
(MK) 2023/03/04(土) 14:17:54
Private Sub CommandButton1_Click() Unload Me UserForm2.Show End Sub
Private Sub UserForm_Initialize() Me.TextBox1.SetFocus End Sub (フォーキー) 2023/03/04(土) 14:21:21
どんな展開になっていて、この後の展開はどうなるのか 解らないので何とも言えませんが
この時点の >Unload Me は、ちょっと危険かも。 (普通の子) 2023/03/04(土) 14:40:23
>userform2が開きます。 だったらuserform2のInitializeに Private Sub UserForm_Initialize() TextBox1.SetFocus End Sub でいいのでは。 (?) 2023/03/04(土) 14:47:28
HookListBoxScroll
End Sub
Private Sub TextBox1_Change()
TextBox1.SetFocus
'テキストボックスの内容が変化したときに実行するコード
Dim lstDat As Variant
Dim buf As String, bufLen As Integer
Dim rowEnd As Long
Dim i As Long
'D列の最終行を調べ、変数lstDatにD列の値を格納
With ThisWorkbook.Worksheets("機種リスト")
rowEnd = .Cells(Rows.Count, 1).End(xlUp).row
lstDat = Worksheets("機種リスト").Range(.Cells(1, 1), .Cells(rowEnd, 1)).Value
End With
'テキストボックスの内容と文字数を変数buf,bufLenに格納
buf = Me.TextBox1
bufLen = Len(buf)
'リストボックスの内容を初期化
Me.ListBox1.Clear
'テキストボックスの文字数が0の場合終了
If bufLen = 0 Then Exit Sub
'テキストボックスの内容とlstDatの内容を比較する
For i = 1 To rowEnd
'一致した場合にリストボックスに値を追加する
If buf = Left(lstDat(i, 1), bufLen) Then
Me.ListBox1.AddItem lstDat(i, 1)
End If
Next i
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'リストボックスの値をダブルクリックしたときに実行するコード
Dim buf As String
'リストボックスの値を変数bufに格納する
buf = Me.ListBox1.Value
....
処理
End Sub
リストボックスが何か影響しているのですか?
(当てたい) 2023/03/04(土) 14:57:11
関係あるかわかりませんが、ちょっと気になったので 調べてみました。
https://jizilog.com/vba-listbox-userform
(MK) 2023/03/04(土) 15:09:55
参考まで。
[Excel VBA]ユーザーフォームを隠すには? https://xtech.nikkei.com/it/atcl/column/15/090100207/090100118/ (MK) 2023/03/04(土) 15:19:38
>これがuserform2内に記載されているコードです。 UserFormにTextBox1を張り付け、そのコードも貼り付けて 試してみたらtextbox1にフォーカスされますけど。
(?) 2023/03/04(土) 15:40:54
Private Sub TextBox1_Change()のTextBox1.SetFocusのことでしょうか。 ここにTextBox1.SetFocusは必要ないと思いますけど これと勘違いしていませんか。 (?) 2023/03/04(土) 16:09:23
最低限のコードから徐々にコードを追加して検証してみるのがいいとおもいます。 以下のように、Uerform1にコマンドボタン1個だけ、Uerform2はテキストボックス1個だけ配置 ちゃんとUserform2を表示したとき、テキストボックスにフォーカスがあたります
'標準モジュール Sub test() UserForm1.Show End Sub
'Useform1 コマンドボタン1個だけ配置
Private Sub CommandButton1_Click() Me.Hide UserForm2.Show End Sub
'Useform2 テキストボックス1個だけ配置(TabIndex=0) 'コードなし (´・ω・`) 2023/03/04(土) 17:08:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.