我想在代码中将变量连接成对象名称。我有一个名为cmdopt29collapse的对象,并且我试图用一个变量替换29,但是只是在执行cmdopt &'x'&崩溃,没有工作,我在想什么?在代码中连接对象名称中的变量
Dim spaceBetween As Integer, origTop As Integer
If cmdOpt29Collapse.Caption = "-" Then
cmdOpt29Collapse.SetFocus
Opt29File_List_subform.Visible = False
spaceBetween = LblOpt28.Top - Opt29File_List_subform.Top - Opt29File_List_subform.Height
origTop = LblOpt28.Top
LblOpt28.Top = lblOpt29.Top + lblOpt29.Height + spaceBetween
CmdOpt28Collapse.Top = CmdOpt28Collapse.Top - (origTop - LblOpt28.Top)
Box28.Top = Box28.Top - (origTop - LblOpt28.Top)
Opt28File_List_subform.Top = LblOpt28.Top + LblOpt28.Height
'move 27
spaceBetween = lblOpt27.Top - Opt28File_List_subform.Top - Opt28File_List_subform.Height
origTop = lblOpt27.Top
lblOpt27.Top = LblOpt28.Top + LblOpt28.Height + spaceBetween
CmdOpt27Collapse.Top = CmdOpt27Collapse.Top - (origTop - lblOpt27.Top)
Box27.Top = Box27.Top - (origTop - lblOpt27.Top)
Opt27File_List_subform.Top = lblOpt27.Top + lblOpt27.Height
cmdOpt29Collapse.Caption = "+"
Else
spaceBetween = LblOpt28.Top - lblOpt29.Top - lblOpt29.Height
origTop = LblOpt28.Top
LblOpt28.Top = Opt29File_List_subform.Top + Opt29File_List_subform.Height + spaceBetween
CmdOpt28Collapse.Top = CmdOpt28Collapse.Top + (LblOpt28.Top - origTop)
Box28.Top = Box28.Top + (LblOpt28.Top - origTop)
Opt28File_List_subform.Top = LblOpt28.Top + LblOpt28.Height
Opt29File_List_subform.Visible = True
'move 27
spaceBetween = lblOpt27.Top - LblOpt28.Top - LblOpt28.Height
origTop = lblOpt27.Top
lblOpt27.Top = Opt28File_List_subform.Top + Opt28File_List_subform.Height + spaceBetween
CmdOpt27Collapse.Top = CmdOpt27Collapse.Top + (lblOpt27.Top - origTop)
Box27.Top = Box27.Top + (lblOpt27.Top - origTop)
Opt27File_List_subform.Top = lblOpt27.Top + lblOpt27.Height
cmdOpt29Collapse.SetFocus
cmdOpt29Collapse.Caption = "-"
End If
TL/DR,长话短说,我想给一个变量连接成一个对象引用
这听起来并不可能,但你应该发布迄今为止的代码。 – Brad
请参阅[这个类似的问题](http://stackoverflow.com/questions/22874920/vba-sub-insert-text-string-into-class-object-reference/22881385#22881385)...一个建议是使用'CallByName' http://support.microsoft.com/kb/186143 –
如果你的对象实际上是一个窗体上的控件,那么你也可以执行'Me.Controls(“cmdopt”&x&“collapse”)' 。但如果它是一个变量,看起来像你是SOL,除非你使它成为一个属性,并使用@DavidZemens链接 – Brad