Vba 列表框未以UserForm显示
我试图在一个名为“字段”的单独表单中以用户表单的形式显示一个列表框。问题是,列表不会显示。它在单元格旁边显示为一个下拉箭头,但不是我想要的用户表单Vba 列表框未以UserForm显示,vba,listbox,Vba,Listbox,我试图在一个名为“字段”的单独表单中以用户表单的形式显示一个列表框。问题是,列表不会显示。它在单元格旁边显示为一个下拉箭头,但不是我想要的用户表单 Private Sub UserForm_Activate2() On Error Resume Next Me.ListBox2.Clear For Each element In gFieldsListArr Me.ListBox2.AddItem element Next element
Private Sub UserForm_Activate2()
On Error Resume Next
Me.ListBox2.Clear
For Each element In gFieldsListArr
Me.ListBox2.AddItem element
Next element
UserForm_initialize2
End Sub
Private Sub UserForm_initialize2()
For Each element In Split(gCellCurrVal2, ",")
For ii = 0 To ListBox2.ListCount - 1
If element = Me.ListBox2.List(ii) Then
Me.ListBox2.Selected(ii) = True
End If
Next ii
Next element
End Sub
TL;DR:您不能以任何方式重命名事件处理程序或更改其成员签名*,因为正确的成员定义是由事件定义的,而不是由其处理程序定义的
在过程范围之间导航时,查看编辑器顶部的下拉列表: 每当左侧下拉列表显示
(常规)
,您就不在事件处理程序中
与之相比:
左侧下拉列表列出了所有可用的接口和事件源;要处理表单的事件,必须从该下拉列表中选择UserForm
,然后从右侧下拉列表中选择成员
执行此操作时,VBE会为您创建过程存根,每次都使用正确的名称和签名
每当您导航到要用作事件处理程序的内容,并且左侧下拉列表显示(常规)
,您就会看到没有响应任何事件的死代码
*您可以将可访问性从
Private
更改为Public
,但直接调用事件处理程序是一种设计风格,因此不需要这样做。您可以更改参数名称,但不能更改其类型;不过,重命名处理程序参数是一件相当令人惊讶的事情,也是最好避免的事情。所以,是的,最好不要以任何方式更改这些成员签名。TL;DR:您不能以任何方式重命名事件处理程序或更改其成员签名*,因为正确的成员定义是由事件定义的,而不是由其处理程序定义的
在过程范围之间导航时,查看编辑器顶部的下拉列表: 每当左侧下拉列表显示
(常规)
,您就不在事件处理程序中
与之相比:
左侧下拉列表列出了所有可用的接口和事件源;要处理表单的事件,必须从该下拉列表中选择UserForm
,然后从右侧下拉列表中选择成员
执行此操作时,VBE会为您创建过程存根,每次都使用正确的名称和签名
每当您导航到要用作事件处理程序的内容,并且左侧下拉列表显示(常规)
,您就会看到没有响应任何事件的死代码
*您可以将可访问性从
Private
更改为Public
,但直接调用事件处理程序是一种设计风格,因此不需要这样做。您可以更改参数名称,但不能更改其类型;不过,重命名处理程序参数是一件相当令人惊讶的事情,也是最好避免的事情。所以,是的,最好不要以任何方式更改这些成员签名。为什么在下一步继续出错时?您是否接受了任何错误?为什么在错误恢复时继续下一步?你承认有什么错误吗?