2

我基本上是在创建一个在运行时生成的项目列表。这些项目作为标签列在用户表单上(项目存储在链表中)。对于每个项目,我想添加一个微调按钮,以便可以在列表中上下移动项目。我的旋转按钮创建得很好,我编码的事件不起作用??我不确定我做错了什么。大概是很简单的事情...

这是保存事件的类模块:cls_Spin_Btn

Private WithEvents Spin_Events As SpinButton

Private Sub Spin_Events_SpinUp()

    Debug.Print "Hey. Spin button worked."

End Sub

Public Property Set SetNewSpinButtion(newSpinBtn As MSForms.SpinButton)

    Set Spin_Events = newSpinBtn

End Property

这是从模块调用的代码:

Function AddRunToForm(f As UserForm, r As ProductionRun, top As Integer) As Integer

Dim Run_SpinBtn As MSForms.SpinButton
Dim spinBtn As cls_Spin_Btn

Set Run_SpinBtn = f.Controls.Add("Forms.SpinButton.1", r.ProdID & "_SBtn", True)
Set spinBtn = New cls_Spin_Btn

With Run_SpinBtn

    .top = ProdID_Lbl.top
    .Left = 5
    .height = 10
    .Width = 12
    .height = 18
    .Visible = True

End With

Set spinBtn.SetNewSpinButtion = Run_SpinBtn

AddRunToForm = ProdID_Lbl.top + ProdID_Lbl.height

End Function

此代码从同一模块中的循环调用,为每个项目创建标签和旋转按钮。我究竟做错了什么?任何帮助将不胜感激。

4

1 回答 1

1

在你的用户表单代码模块中,把这个

Private mcolSpinButtons As Collection

Public Property Get SpinButtonCollection() As Collection

    If mcolSpinButtons Is Nothing Then Set mcolSpinButtons = New Collection

    Set SpinButtonCollection = mcolSpinButtons

End Property

这将使您能够访问一个模块级别的变量,只要您的用户表单打开,该变量就会保持在范围内。当您将 cls_Spin_Btn 实例放入该集合时,它们也将保留在范围内。

然后在你的函数中,一旦你创建了新的旋转按钮类实例,将它添加到集合中

f.SpinButtonCollection.Add spinBtn, spinBtn.Name
于 2012-08-07T18:51:52.290 回答