【问题标题】:User-defined type not defined when used in form?在表单中使用时未定义用户定义类型?
【发布时间】:2015-07-13 22:59:29
【问题描述】:

根据下面的建议更新了问题,但仍然有同样的问题。

当我在组合框中选择客户 ID 时,我试图让我的标签 txtFullName 标题显示我的类型客户名称元素的名称,但是当我尝试从组合框更改子中访问类型元素时,它告诉我它是不是已清除的子或功能?

在模块中:

Type Customer
    Name as string
End Type

Dim Customer() as Customer
Dim size as Integer

Sub ExampleStart()

    size = Sheets("Customers").UsedRange.Rows.Count
    ReDim Customer(size)

    For i = 0 To size
        With Customer(i)
            .Name = cells(i + 1, 1).Value
        End With
    Next

    ExampleForm.Show

End Sub

以示例形式:

Private Sub ExampleForm_Initialize()

    For i = 0 To size
        ExampleForm.comboboxCustomer.AddItem (Customer(i).Name) '<-Fails!
    Next

End Sub

编译错误告诉 Sub 或 Function 尚未定义,即使我清楚地在任何私有 sub 之外定义了它?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    UserForm_Initialize 事件处理程序中声明Customer() 数组意味着无法从该事件处理程序之外的任何地方访问该数组。将Dim Customer() As Customer 语句移动到模块顶部,紧跟End Type 行之后。这将使该数组对表单模块中的每个事件处理程序可见

    【讨论】:

      【解决方案2】:

      通过将 Customer() 和 size 设置为 Public 来解决问题

      Type Customer
          Name as string
      End Type
      
      Public Customer() as Customer 'instead of Dim
      Public size as Integer 'instead of Dim
      

      现在可以从用户表单中访问 Customer 类型的元素

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 2016-08-24
        • 2017-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多