在 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
来自哪里。我的示例不会“正常工作”,但它向您展示了您将使用的模式。
我正在编写这段代码,它在单击按钮时启动一个对象。
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
来自哪里。我的示例不会“正常工作”,但它向您展示了您将使用的模式。