鼠标在打开时自动选择列表框项

时间:2019-05-08 20:41:46

标签: vba select listbox userform

使用形状打开用户窗体时(通过分配用于加载用户窗体的宏),当用户窗体打开时,将在鼠标光标所在的位置自动选择一个项目。

我已经尝试了很多方法,例如将其锁定在用户窗体初始化上,并使用用户窗体激活将其解锁(由于Activate事件触发得太快,此方法不起作用,我还尝试在其中进行循环以减慢速度结束激活事件,但无济于事),在用户窗体初始化时将其锁定,并使用列表框鼠标悬停事件将其解锁(这不起作用,不确定原因),在用户窗体激活时重新填充列表框再次无效,因为它似乎在显示之前就触发了。

这是我用来显示用户窗体的代码,如果您将形状放置在屏幕中间并将该宏分配给该形状,则用户窗体应该基本上在按钮上打开(如果需要,可以调整):

Sub Main
    With UserForm1
        .StartUpPosition = 0
        .Left = Application.Left + (0.5 * Application.Width) - (0.5 * .Width)
        .Top = Application.Top + (0.5 * Application.Height) - (0.5 * .Height)
        .ListBox1.MultiSelect = fmMultiSelectSingle
    End With

    bDictionaryHasAdditions = False

    Call UserForm1.Show
End Sub

这是一个简单的初始化子例程,用于填充列表框:

Private Sub UserForm_Initialize()
    With UserForm1.ListBox1
        For iIncrementer = 1 To 100
            .AddItem iIncrementer
        Next iIncrementer
    End With
End Sub

如果按钮位于用户窗体中打开列表框正下方的位置,则应该会发现在单击按钮并打开用户窗体时,它将自动在鼠标位置选择该项目。

如何使它表现为打开时不会自动在列表中选择一个项目的方式?我正在创建一个与数据相关联的应用程序,并且我不希望用户看到打开该应用程序后立即选择了一个荒谬的项目。

我不想只移动按钮,因为如果用户恰巧在加载鼠标之前移动了鼠标,我不希望这种情况发生在用户身上。

0 个答案:

没有答案