如何从已声明变量的串联中获取值?

我声明了许多变量:

Dim SRC_A3 As Variant: SRC_A3 = Worksheets("SOURCES").Range("A3") ' Get filename
Dim MergeKey1 As Variant: MergeKey1 = Right(SRC_A3, 36) ' Trim the cst key out of this filename
Dim SRC_A4 As Variant: SRC_A4 = Worksheets("SOURCES").Range("A4") ' Get filename
Dim MergeKey2 ... 

我需要稍后通过串联创建变量来获取这些变量的值:

For MKey = 2 To 6
    Dim MKeyNo As Variant: MKeyNo = "MergeKey" & (MKey - 1)
    Dim MGK As As Variant: MGK = MKeyNo
    MsgBox "MKey:" & MKey & " + " & "MKeyNo:" & MKeyNo & " + " & "MGK:" & MGK
        If IsEmpty(MGK) = False _
        Then
        Dim UnDelete1 As Range: Set UnDelete1 = Worksheets("SQL_UPDATES").Range("$B$" & MKey)
        Dim UnDelete2 As Range: Set UnDelete2 = Worksheets("SQL_UPDATES").Range("$B$" & (MKey + 1))
        Dim UnDelCode1 As String
            UnDelCode1 = "USE [nfAPCO] UPDATE co_individual SET ind_delete_flag = 0 WHERE ind_cst_key = '" & MGK & "'"
        Dim UnDelCode2 As String
            UnDelCode2 = "USE [nfAPCO] UPDATE co_customer SET cst_delete_flag = 0 WHERE cst_key = '" & MGK & "'"
        UnDelete1.Value = UnDelCode1
        UnDelete2.Value = UnDelCode2
        End If
    MKC = MKey + 1
    Cells(MKC, 1).Activate
Next

然而,串联创建一个字符串并且不会恢复为声明的变体(例如,“MergeKey1”)然后产生一个值(或没有值)。这使得 IsEmpty(MGK) 始终为 False 并且不会在我的其他串联中产生值。消息框显示“MKey:2 + MKeyNo:MergeKey1 + MKG:MergeKey1”,但我希望它产生“MergeKey1”的等等。如果我可以只用 MKeyNo 做到这一点,而忘记 MGK 那很好顺便说一句。

任何帮助总是不胜感激!

回答

这在 VBA 中是不可能的 - 看看使用数组。

这是一个简单的示例,它使用 A1:A6 中的值填充数组 MergeKeys。

Dim MergeKeys(1 To 6) 
Dim idx As Long

    For idx = 1 To 6
        MergeKey(idx) = Range("A" & idx).Value
    Next idx


以上是如何从已声明变量的串联中获取值?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>