Kin*_*ong 4 vba dynamic-arrays
我循环遍历命名范围并根据单元格是否为空来附加数组.我不太熟悉VBA中的数组,所以也许我的逻辑不正确.代码会一直覆盖数组中的第一个元素,并且永远不会增加.我不确定为什么即使将一个元素分配给第一个索引后,UBound(myArray)仍然保持为0.
我的代码看起来像:
Dim myArray() As Double
ReDim Preserve myArray(0)
For Each cell In [myRange]
If cell <> "" Then
If UBound(myArray) > 0 Then
ReDim Preserve myArray(0 To UBound(myArray) + 1)
End If
myArray(UBound(myArray)) = cell.value
End If
Next
Run Code Online (Sandbox Code Playgroud)
使用变量并递增它,如果变量大于代码完成时的ubound,则没有区别:
Sub Test()
Dim myArray() As Double, X As Long
X = 0
ReDim Preserve myArray(X)
For Each cell In Range("Hello")
If cell <> "" Then
ReDim Preserve myArray(0 To X)
myArray(X) = cell.Value
X = X + 1
End If
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
改变If UBound(myArray) > 0 Then一下If UBound(myArray) >= 0 Then就可以解决问题。
Sub Test()
Dim myArray() As Double
ReDim Preserve myArray(0)
For Each cell In Range("Hello")
If cell <> "" Then
If UBound(myArray) >= 0 Then
myArray(UBound(myArray)) = cell.Value
ReDim Preserve myArray(0 To UBound(myArray) + 1)
End If
End If
Next
End Sub
Run Code Online (Sandbox Code Playgroud)