Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 列表框未以UserForm显示_Vba_Listbox - Fatal编程技术网

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
,但直接调用事件处理程序是一种设计风格,因此不需要这样做。您可以更改参数名称,但不能更改其类型;不过,重命名处理程序参数是一件相当令人惊讶的事情,也是最好避免的事情。所以,是的,最好不要以任何方式更改这些成员签名。

为什么在下一步继续出错时
?您是否接受了任何错误?为什么在错误恢复时继续下一步?你承认有什么错误吗?