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

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

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

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

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

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

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

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

我不想只移动按钮,因为如果用户恰好在加载鼠标之前移动了鼠标,我也不想让用户发生这种情况。

vba select listbox userform
1个回答
0
投票

我想我可以解决它。

  1. 在列表框的属性中设置为“ Locked = True”
  2. 在子“ Userform_Activate”的末尾写“ Me.Listbox.Locked = False”

这是我唯一能找到的解决方案。我希望它也对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.