You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA如何通过拼接字符串生成动态变量名并读取对应数组值

VBA动态拼接变量名读取数组值的解决方案

VBA原生不支持通过字符串形式的变量名直接访问变量值,你当前的拼接操作只会生成普通文本字符串,不会被识别为变量调用,因此无法拿到对应数组的实际值。下面给出两种常用的实现方案:

方案1:使用二维数组重构数据(最简便)

把三个币种的数组整合到同一个二维数组中,直接通过下标索引取值,实现逻辑最简单:

Sub SearchValue()
    ' 定义二维数组,第一维对应币种(0=EUR、1=USD、2=GBP),第二维对应数值索引
    Dim BUY_Array(0 To 2, 0 To 5) As Integer
    Dim curr As Variant
    curr = Array("EUR", "USD", "GBP")
    
    ' 给二维数组批量赋值
    ' EUR_Buy数组值
    BUY_Array(0, 0) = 1: BUY_Array(0, 1) = 2: BUY_Array(0, 2) = 3: BUY_Array(0, 3) = 4: BUY_Array(0, 4) = 5: BUY_Array(0, 5) = 6
    ' USD_BUY数组值
    BUY_Array(1, 0) = 2: BUY_Array(1, 1) = 4: BUY_Array(1, 2) = 6: BUY_Array(1, 3) = 8: BUY_Array(1, 4) = 10: BUY_Array(1, 5) = 12
    ' GBP_BUY数组值
    BUY_Array(2, 0) = 1: BUY_Array(2, 1) = 3: BUY_Array(2, 2) = 5: BUY_Array(2, 3) = 7: BUY_Array(2, 4) = 9: BUY_Array(2, 5) = 11
    
    Dim i As Integer, j As Integer
    For i = 0 To 2
        For j = 0 To 5
            If BUY_Array(i, j) = 8 Then
                MsgBox "Yes,对应币种:" & curr(i) & ",索引位置:" & j
            End If
        Next j
    Next i
End Sub

方案2:使用字典存储数组(更灵活,支持按币种名称调用)

如果需要保留按币种名称访问的逻辑,可以用字典对象实现,键存储币种标识,值存储对应的数组:

Sub SearchValue()
    ' 创建字典对象,无需额外引用
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' 给字典添加键值对:键为币种名,值为对应汇率数组
    dict("EUR") = Array(1, 2, 3, 4, 5, 6)
    dict("USD") = Array(2, 4, 6, 8, 10, 12)
    dict("GBP") = Array(1, 3, 5, 7, 9, 11)
    
    Dim curr As Variant
    curr = Array("EUR", "USD", "GBP")
    Dim i As Integer, j As Integer
    For i = 0 To 2
        For j = 0 To 5
            ' 先通过币种名从字典取出对应数组,再取下标对应的值判断
            If dict(curr(i))(j) = 8 Then
                MsgBox "Yes,对应币种:" & curr(i) & ",索引位置:" & j
            End If
        Next j
    Next i
End Sub

内容的提问来源于stack exchange,提问作者johnlemon9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:57:05