在 VBA 中使用变量设置对象名称

Set Object Name with Variable in VBA

我正在编写这段代码,它在单击按钮时启动一个对象。

Public Sub cmdMA_Click()

    Set this_renewal = CreateRenewal(this_renewal, cMA)
    
    Call BranchLabelVisibility(True)
    Me.Controls("lblBranchToAdd" & 1).Caption = this_renewal.Abb
    Call DateLabelVisibility(True)
    Me.Controls("lblYearToAdd" & 1).Caption = this_renewal.Year
    Me.Controls("lblMonthToAdd" & 1).Caption = this_renewal.Month
    Call TestMonth(1)

End Sub

但是,某些按钮需要 运行 在 2 个对象上使用完全相同的代码,如下所示:

Public Sub cmdAB_Click()

    Set this_renewal = CreateRenewal(this_renewal, cAB)
    
    Dim i As Integer: For i = 1 To 2
        Call BranchLabelVisibility(True)
        Me.Controls("lblBranchToAdd" & i).Caption = this_renewal.Abb
        Call DateLabelVisibility(True)
        Me.Controls("lblYearToAdd" & i).Caption = this_renewal.Year
        Me.Controls("lblMonthToAdd" & i).Caption = this_renewal.Month
        Call TestMonth(i)
    Next i

End Sub

我想出了如何使用控件执行此操作,但我无法弄清楚如何使用我的用户定义 class 更新来执行此操作。我想把它改成这样:

set Renewal("this_renewal" & i) = CreateRenewal(Renewal("this_renewal" & i))

有没有办法做这样的事情?然后以后我可以类似地调用对象。

我会使用一组更新对象。

Dim Renewals(1) As Renewal
Set Renewals(0) = CreateRenewal(this_renewal, cMA)
Set Renewals(1) = CreateRenewal(this_renewal, cAB)

' Usage:
Me.Controls("lblBranchToAdd" & i).Caption = Renewals(i - 1).Abb

注意:您的示例中缺少很多代码。不确定 this_renewal 来自哪里。我的示例不会“正常工作”,但它向您展示了您将使用的模式。