VBA Excel,循环变量

时间:2014-04-22 17:42:35

标签: excel vba loops

现在试着在下面修理几个小时,我想我只是永远坚持下去了。至关重要。

当前代码:

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个小时,所以我的回复可能有点延迟。

提前感谢您的帮助!

2 个答案:

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