Excel 使用名称中的索引动态查询变量的内容
我有三个字符串变量,Excel 使用名称中的索引动态查询变量的内容,excel,vba,Excel,Vba,我有三个字符串变量,thisTemplateFrame1Type,HistTemplateFrame2Type,thisTemplateFrame3Type 它们包含诸如PVCV、ABS\u Var等值 我有一个循环,它通过这3个变量(但是n,因为它可以是1到3个),然后基于选择Case我希望它做一些事情 例如: for i = 1 to {defined number of Frames} Select Case thisTemplateFrame1Type Case Is
thisTemplateFrame1Type
,HistTemplateFrame2Type
,thisTemplateFrame3Type
它们包含诸如PVCV
、ABS\u Var
等值
我有一个循环,它通过这3个变量(但是n
,因为它可以是1到3个),然后基于选择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
,因此案例
块继续移动
如何正确传递该值?您不能以这种方式动态构造变量名。但是,您可以重新构造(boom-boom)结构并循环一系列帧
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
不能以这种方式动态构造变量名。但是,您可以重新构造(boom-boom)结构并循环一系列帧
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