动态查询名称中具有索引的变量的内容

时间:2018-11-02 12:55:07

标签: excel vba

我有三个字符串变量,thisTemplateFrame1TypehisTemplateFrame2TypethisTemplateFrame3Type

它们包含PVCVABS_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块继续进行。

如何正确传递值?

1 个答案:

答案 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