首页 > 解决方案 > 将切换按钮分配给类模块的问题

问题描述

谁能帮我在这里做错了什么?控件未附加到类!

我的班级模块:CTglBtn

Option Explicit
Public WithEvents tgl1 As MSForms.ToggleButton
Private ac$

Public Property Get ACNumber() As String
    ACNumber = ac
End Property

Public Property Let ACNumber(value As String)
    ac = value
End Property

Private Sub tgl1_Click()
' do something here
End Sub

这是我将表单的控件分配给班级的地方。

Dim Ctgl As CTglBtn
Dim Coll As Collection

Private Sub UserForm_Initialize()
Dim aclist As Range

Set aclist = ThisWorkbook.Sheets("panel").Range("acnum")

    For i = 1 To 10
        Set Ctgl = New CTglBtn
        Set Ctgl.tgl1 = Me.Controls("TB" & i)
        Ctgl.ACNumber = aclist.Cells(i + 1, 1)
        Me.Controls("TB" & i).Caption = Ctgl.ACNumber
        Coll.Add Ctgl
        Set Ctgl = Nothing
    Next
'        MsgBox Coll.Count
    End Sub

标签: vbaexcelclass

解决方案


Dim Coll As Collection需要是模块级别的声明,否则在例程结束后立即清除。

您还需要初始化该变量:

Set coll = New Collection

推荐阅读