VB提取数组元素组成新数组

s = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
For i = 0 To UBound(s)
If s(i) > 2 And s(i) < 6 Then
MsgBox s(i)
End If
Next
3 4 5这三个数满足条件,如何将满足条件的三个数存到一个新数组中,数组这块感觉很迷茫!!!如果不确定新数组元素个数时该作如何考虑??

那就运行时重新定义A的下标范围,不过数据多了可能会影响效率

Dim A() As Integer '先定义一个空数组
s = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
j = 1
For i = 0 To UBound(s)
If s(i) > 2 And s(i) < 6 Then
ReDim Preserve A(1 To j) '更新A的下标范围
A(j) = s(i) '将满足条件的元素存到新数组元素,注意只能一个一个元素赋值
j = j + 1 '修改数组下标,以便存入下一个元素
MsgBox s(i)
End If
Next i

'最后 A(1)=3 A(2)=4 A(3)=5 后面没了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-15
dim A () as integer ’先定义一个空数组
s = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
j = 1 ‘j是数组下标,数组元素是通过下标来识别的
For i = 0 To UBound(s)
If s(i) > 2 And s(i) < 6 Then
A(j) = s(i) '将满足条件的元素存到新数组元素,注意只能一个一个元素赋值
j = j+1 '修改数组下标,以便存入下一个元素
MsgBox s(i)
End If
Next i追问

我试了一下,这段代码要报错:下标越界

追答

把第一行改成dim A (1 to 6) as integer

追问

嗯 这样确实能够实现了 A(1)=3 A(2)=4 A(3)=5 但是A(4)到A(6)都是0,有没有什么办法让他自动判断满足条件的元素个数,避免这种下标元素为0的情况