现在试着在下面修理几个小时,我想我只是永远坚持下去了。至关重要。
当前代码:
Sub ttttt()
Dim i1 As Integer, i2 As Integer, i3 As Integer, i4 As Integer
Dim vGen As Variant
Dim vCurrent As Variant
i1 = 1
i2 = 20
i3 = 300
i4 = 4000
vGen = Array(i1, i2, i3, i4)
For Each vCurrent In vGen
MsgBox vCurrent
Next
End Sub
问题1 我希望能够返回变量名称,方法与返回类型相同:TypeName()。所以对于第一个循环,msgbox会说:i1等等。我正在尝试.name等的不同组合,但似乎总是让我失望。
问题2 问题1的原因是,作为下一步,我想根据变量名称添加一些原始值。
希望我想有这样的东西(显然这段代码不起作用,它仅用于演示):
For Each vCurrent In vGen
vCurrent.name = vcurrent + iSomeNumber
Next
iSomeNumber将从程序的另一部分进入,然后我可以在以后检索更新的个别变量(即i1将不再是值1但是1 + iSomeNumber)。
希望我明白地解释了我的问题,如果您需要任何其他信息,请告诉我。
此外,我将再AFK 4个小时,所以我的回复可能有点延迟。
提前感谢您的帮助!
答案 0 :(得分:3)
您可以查看Scripting.Dictionary
对象:它允许您将值与字符串"键"
Dim d, k
Set d = CreateObject("Scripting.Dictionary")
d.Add "A", 10
d.Add "B", 20
d.Add "C", 30
For Each k in d
Debug.print k, d(k)
Next k
d("B") = d("B") + 100
答案 1 :(得分:1)
好主意Tim W。
稍作修改。尝试运行这个:
Sub ttttt()
Set Dict = CreateObject("Scripting.Dictionary")
Dict.Add "A1", 10
Dict.Add "B1", 20
Dict.Add "B2", 30
Dict.Add "C1", 40
ADDValue1 = 50
ADDValue2 = 100
ADDValue3 = 150
For Each k In Dict
If k Like ("*A*") Then
Debug.Print Dict(k) + ADDValue1
End If
If k Like ("*B*") Then
Debug.Print Dict(k) + ADDValue2
End If
If k Like ("*C*") Then
Debug.Print Dict(k) + ADDValue3
End If
Next k
End sub