这可能是一个非常简单的问题。但我有这个数组,我需要从中删除无用的部分。但我仍然希望它在数组中。
因此,当数组出现时,数组看起来像这样:
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
,依此类推。
但是,我想再次将每个已清理的字符串发送到一个数组中。我该怎么做?
答案 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