0

ユーザーがComboBoxの編集領域にデータを入力しています

ComboBoxの変更イベントは、次のコードを実行するために使用されます。

    AppActivate "Microsoft Excel"
        :
    'Do some stuff
        :
    UserForm1.Show
    UserForm1.ComboBox1.SetFocus

これは問題なく機能しますが、ComboBoxに再びフォーカスがある場合でも(とにかくUserform.ActiveControlによると)、この事実を示す挿入ポインターがないため、ユーザーはデータの入力を続行する前にComboBoxを再選択する必要があります。

挿入ポインターが再表示され、ユーザーがComboBoxを再選択しなくても、データを直接入力し続けることができるようにしたいと思います。

次のコード行を追加する

    SendKeys "{TAB}+{TAB}{RIGHT}"

は1つの解決策ですが、面倒です(ComboBoxイベントを生成し、とにかく可能であればSendKeysの使用は避けるのが最善です)

誰かがより良い解決策を提案できますか?

Q.なぜ黒い羊は白い羊よりも食べる量が少ないのですか?

A.それほど多くないので

4

3 に答える 3

1

問題は、ユーザーフォーム自体がワークシートや他のユーザーフォームにフォーカスしていない可能性があることです。

このコードを試してください:

with UserForm1.ComboBox1
    .Visible = False
    .Visible = True
    .setfocus
end with

または、より一般的に適切にフォーカスを設定するには、このサブルーチンを呼び出します。

Sub Focus_ControlOfUserForm(ByRef Obj As Object) 'from the Userform, call Focus_ControlOfUserForm(Me)
Dim ctl As Control
With Obj
    Set ctl = .ActiveControl
    If TypeName(ctl) = "MultiPage" Or TypeName(ctl) = "Frame" Then
        Set ctl = ctl.SelectedItem.ActiveControl.Name
    End If

    With ctl
        Dim Af As Boolean
        With Application
            Af = .ScreenUpdating
            .ScreenUpdating = False
        End With
        '.SetFocus
        .Visible = False
        .Visible = True
        .SetFocus 
        If Af Then Application.ScreenUpdating = True
    End With
End With
End Sub

また、この種のコードを使用して、ホバー時に ControlTipText を表示する必要があるときにフォームにフォーカスを移動します。フォームにフォーカスがない場合、テキスト バブルはマウス ホバー時に表示されません...

于 2016-05-22T16:15:37.437 に答える
0

UserForm1.ComboBox1.SetFocus

追加

UserForm1.ComboBox1.SelStart = 0 'set the selected text starting position to 0
于 2013-03-15T23:08:54.053 に答える