Excel VBA - 如何触发列表框单击另一个控件

时间:2018-03-31 17:34:58

标签: excel vba excel-vba

我一直在使用Excel VBA开展一个小项目。我在工作表打开时使用SQLServer数据库中的客户端名称填充的工作表上有一个列表框(listbox1)。单击列表框中的项目可选择并显示提供的服务。这一切都正常。

我添加了两个数据选择器控件,用于减少所选行数,具体取决于输入的日期。当日期选择器控件中的日期发生变化时,我想使用所选条目触发列表框上的click事件。

我的VBA有点生疏,在我的生活中,我没有能够确定如何在数据选择器控件更改事件中编写代码以触发列表框上的单击。我已经尝试了几种方法,总是得到一个错误,表明“对象不支持属性或方法”。以下是最新尝试的简单代码:

Private Sub StartDatePicker_Change()

    ThisWorkbook.ActiveSheet.ListBox1_Click

End Sub

我确信我缺少一些简单的东西。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

如果我创建一个ListBox并添加一个宏来右键单击上下文菜单,那么宏最终会在它自己的模块中。

然后,我可以通过像ListBox1_Click这样的宏的名称来调用它。你有没试过?

答案 1 :(得分:0)

在OP的进一步规范之后

编辑(见上一部分)

我不确定你的目标,但是在工作表上有一个ActveX Listbox控件,这将触发其click事件处理程序:

Private Sub StartDatePicker_Change()
    Me.ListBox1.ListIndex = 0
End Sub

当然,作为ActiveX控件,此代码将放在工作表代码窗格中

或者你可以

  • 将完成填充工作的所有当前ListBox1_Click代码移动到特定的子目录:

    Sub Populate()
        ... move here all code from ListBox1_Click doing the populating work
    End Sub
    
  • 更改Listbox1_Click()事件处理程序,如下所示:

    Private Sub ListBox1_Click()
        Populate ' this will call the sub that does the populating work
    
        ... here goes other code (if any) directly connected with ListBox1 click event but not relevant for populating
    End Sub
    
  • 按如下方式更改StartDatePicker_Change()事件:

    Private Sub StartDatePicker_Change()
        Populate 'this will do the populating work
    End Sub