我有三个字符串变量,thisTemplateFrame1Type
,hisTemplateFrame2Type
,thisTemplateFrame3Type
。
它们包含PVCV
,ABS_Var
等值。
我有一个循环,它遍历这3个(但是n
可能是1到3个)变量,然后基于Select Case
我希望它执行操作。
示例:
for i = 1 to {defined number of Frames}
Select Case thisTemplateFrame1Type
Case Is = "PVCV"
[do stuff]
...
End Select
Next i
现在这很乏味。
我需要的是这样的东西:
for i = 1 to {defined number of Frames}
Select Case CStr("thisTemplateFrame" & meFrameCounter & "Type")
'this above should evaluate to say thisTemplateFrame1Type, thisTemplateFrame2Type...
Case Is = "PVCV"
[do stuff]
...
End Select
Next i
该解决方案不起作用,因为CStr("thisTemplateFrame" & meFrameCounter & "Type")
始终等于thisTemplateFrame1Type
作为值,但这基本上意味着thisTemplateFrame1Type <> PVCV
,因此Case
块继续进行。
如何正确传递值?
答案 0 :(得分:2)
您不能以这种方式动态地构造变量名。但是,您可以重新构架(动臂)并循环布置框架
Option Explicit
Public Sub test()
Dim frames(), frame As Variant, thisTemplateFrame1Type As String, thisTemplateFrame2Type As String, thisTemplateFrame3Type As String
thisTemplateFrame1Type = "A"
thisTemplateFrame2Type = "B"
thisTemplateFrame3Type = "C"
frames = Array(thisTemplateFrame1Type, thisTemplateFrame2Type, thisTemplateFrame3Type)
For frame = LBound(frames) To UBound(frames)
Select Case frames(frame)
Case "A"
Case "B"
Case "C"
End Select
Next
End Sub