VBA 用户表单组合框输入事件下拉列表在随机位置打开

问题描述 投票:0回答:0

我有一个以 ComboBox 作为第一项的用户窗体。

我的所有组合框都在输入事件上展开。

但是,由于我是第一次使用组合框,因此当用户窗体初始化并显示时,下拉选择会在随机位置展开。

我确定它会正确扩展,但是,当用户窗体居中时,下拉列表会被遗忘在适当的位置。

下面是我用来展开下拉列表的内容。 我知道添加 SendKeys 是一种矫枉过正,但我发现在其他项目中仅使用 DropDown 命令并不总是有效,所以我也使用 SendKeys 命令作为故障保险。

Private Sub ComboBox1_Enter()

    ComboBox1.DropDown
    SendKeys "%{DOWN}"

End Sub

使用上面的代码,存在下拉菜单在随机位置展开的错误。

我实际上是通过在 DropDown 命令之前为 ESC 设置另一个 SendKey 命令来让它工作的。 它可以工作,但是当 UserFrom 初始化时,它会在后台返回一个令人讨厌的音调。 我知道这与在窗口可能尚未准备好时发生的 SendKey 命令有关。不确定。

非常感谢任何帮助。返回的音调不会影响任何功能,但知道它发生很烦人,我想修复它。

我还要补充一点,我是一个完全的新手,但有一种理解可以让我将研究中的代码拼凑起来使事情正常进行。

Private Sub ComboBox1_Enter()

    SendKeys "%ESC"
    ComboBox1.DropDown
    SendKeys "%{DOWN}"

End Sub

我也试过调用宏

Private Sub ComboBox1_Enter()

    Wait
    SendKeys "%ESC"
    ComboBox1.DropDown
    SendKeys "%{DOWN}"

End Sub

Public Sub Wait()

CreateObject("Excel.Application").Wait (Now + TimeValue("00:00:01"))

End Sub

但我仍然听到提示音。

vba ms-word combobox userform sendkeys
© www.soinside.com 2019 - 2024. All rights reserved.