如何从已声明变量的串联中获取值?
我声明了许多变量:
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