vb中如何实现数组长度随输入值个数变化

来源:百度知道 编辑:UC知道 时间:2024/06/18 12:57:18
比如在输入框中输入0.01 0.02 0.03,数组长度为3,且值为输入的数值。
输入0.01 0.02 0.03 0.04则数组长度为4.该如何实现。
请给出一个完整的程序段,有满意的我会提高分数

Private Sub Form_Load()
Dim s() As String, zfc As String
Do
zfc = InputBox("请输入数值(用空格隔开):", "数据输入")
Do While InStr(zfc, " ") > 0 '多个空格转换为单个空格,为下面作准备
zfc = Replace(zfc, " ", " ")
Loop
s = Split(zfc, " ") '你输入的数值已存入数组s
MsgBox "你输入的数据已存入数组,共" & UBound(s) + 1 & "个"
Loop Until zfc = ""

End Sub

摘引自MSDN:
保留动态数组的内容
每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。

在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim 语句就可做到这点。例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:

ReDim Preserve DynArray (UBound (DynArray) + 1)

在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:

ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)

而不