我可以使用带有 Split() 函数的无尺寸字符串数组来从字符串中读取字段,但显然,必须对字符串数组进行尺寸标注才能在循环中使用它。
为什么会这样?还有其他情况下数组不需要标注尺寸吗?
Dim field() As String
field = Split(data_line, "~")
Dim pref_line(10) As String
Input #1, pref_line(i)
Run Code Online (Sandbox Code Playgroud)
但显然,必须确定字符串数组的尺寸才能在循环中使用它。
当使用带有 Split() 函数的无尺寸字符串数组时,该数组会自动确定尺寸并为其分配值。您也可以在循环中使用它For i = LBound(field) to UBound(field)
Option Explicit
Sub Sample()
Dim field() As String
Dim data_line As String
data_line = "aaa~bbb"
field = Split(data_line, "~")
Debug.Print field(0)
End Sub
Run Code Online (Sandbox Code Playgroud)
是否还有其他情况不需要对数组进行标注?
是的。当您不知道需要将多少项添加到数组中时,您可以声明无维数组并用Redim Preserve它来添加值。例如
Option Explicit
Sub Sample()
Dim field() As Long
Dim n As Long, i As Long
ReDim Preserve field(n)
For i = 1 To 100
field(n) = i
n = n + 1
ReDim Preserve field(n)
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)