VB - 追加到数组?

时间:2011-03-29 12:01:21

标签: arrays vba vbscript

这可能是一个非常简单的问题。但我有这个数组,我需要从中删除无用的部分。但我仍然希望它在数组中。

因此,当数组出现时,数组看起来像这样:

ArrValues(0) "Firstname=FIRSTNAME"
ArrValues(1) "Lastname=LASTNAME"
ArrValues(2) "Username=USERNAME"
ArrValues(3) "Displayname=DISPLAYNAME"

然后我通过以下代码片段发送此数组:

For Each s In arrValues
    s = Split(s, "=")
    s = s(1)
Next

这会删除字符串,因此我只获得FIRSTNAME,依此类推。 但是,我想再次将每个已清理的字符串发送到一个数组中。我该怎么做?

2 个答案:

答案 0 :(得分:7)

要回写数组,您需要使用ArrValues(index) = new_value表示法。因此,您需要使用常规For循环而不是For Each,并通过索引访问数组元素。这是你如何做到这一点:

For i = LBound(ArrValues) To UBound(ArrValues)
 s = ArrValues(i)
 s = Split(s, "=")
 ArrValues(i) = s(1)
Next

答案 1 :(得分:3)

只要您的所有字符串都带有'='符号,此代码就可以使用MID函数。我不是性能专家,但我相信MID函数会比SPLIT具有更好的性能(因为split会重新调整每个值)。

尽管如此,海伦的代码也可能有效。只需共享此代码即可显示我的MID方法:)

Sub MidArray()

    Dim ArrValues(3) As Variant
    Dim vValue As Variant
    Dim iCount As Integer

    ArrValues(0) = "Firstname=FIRSTNAME"
    ArrValues(1) = "Lastname=LASTNAME"
    ArrValues(2) = "Username=USERNAME"
    ArrValues(3) = "Displayname=DISPLAYNAME"

    For iCount = LBound(ArrValues) To UBound(ArrValues)

        ArrValues(iCount) = Mid(ArrValues(iCount), InStr(ArrValues(iCount), "=") + 1)

    Next iCount

End Sub