以下是一个在VBA中创建一个新数组的函数,该数组只包含之前数组中的空值的示例代码:
Function FilterEmptyValues(arr() As Variant) As Variant()
Dim result() As Variant
Dim i As Long
Dim j As Long
' 遍历原数组,计算空值数量
Dim emptyCount As Long
emptyCount = 0
For i = LBound(arr) To UBound(arr)
If IsEmpty(arr(i)) Then
emptyCount = emptyCount + 1
End If
Next i
' 创建新数组并将空值复制过去
ReDim result(1 To emptyCount)
j = 1
For i = LBound(arr) To UBound(arr)
If IsEmpty(arr(i)) Then
result(j) = arr(i)
j = j + 1
End If
Next i
FilterEmptyValues = result
End Function
Sub Test()
Dim originalArr() As Variant
Dim filteredArr() As Variant
' 初始化原数组
originalArr = Array("Value1", Empty, "Value2", Empty, "Value3")
' 调用函数获取只包含空值的新数组
filteredArr = FilterEmptyValues(originalArr)
' 打印新数组中的值
For i = LBound(filteredArr) To UBound(filteredArr)
Debug.Print filteredArr(i)
Next i
End Sub
在上面的代码中,我们首先定义了一个名为FilterEmptyValues
的函数,它接受一个arr()
作为输入参数,并返回一个Variant()
作为输出结果。
函数中首先遍历原数组arr
,计算出空值的数量。然后根据空值的数量创建一个新的数组result()
。
然后我们再次遍历原数组arr
,将空值复制到新数组result()
中。
最后,函数返回新数组result()
。
在Test()
子过程中,我们演示了如何使用FilterEmptyValues
函数。首先,我们初始化一个原数组originalArr
,其中包含了一些值和空值。然后,我们调用FilterEmptyValues
函数获取只包含空值的新数组filteredArr
。最后,我们使用Debug.Print
语句将新数组中的值打印出来。
在运行Test()
子过程后,控制台将打印出以下内容:
Empty
Empty