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