向变量数组添加值的VBA方法

16

我正在尝试遍历一个带有"客户"和"金额"列的表格。如果我的循环找到名为"Greg"或"Henry"客户,我想把他的"金额"添加到一个未知大小的数组中。

有人可以帮帮我吗?

3个回答

31

如果所谓的“未知大小”是指元素的数量未知,那么您可以使用动态数组。

Dim aArray() As Single ' or whatever data type you wish to use
ReDim aArray(1 To 1) As Single
If strFirstName = "henry" Then
    aArray(UBound(aArray)) = 123.45
    ReDim Preserve aArray(1 To UBound(aArray) + 1) As Single
End If

如果数组没有被定义维度,那么Ubound(aArray)会出现错误。因此我们需要先给它添加一个元素。这样就会在末尾留下一个空元素,所以你的代码应该考虑到这一点。aArray(Ubound(aArray)-1)将会给你数组中最后一个有效的元素。


1
Private Sub ArrayMy(DataRange)
  Dim DataIndex() As String
  i = 0
  On Error Resume Next
  ReDim DataIndex(0)
  For Each c In DataRange
      DataIndex(i) = c
      i = i + 1
      ReDim Preserve DataIndex(i)
  Next
End Sub

1
我认为最好使用listArray对象:
Dim list, name as variant
Set list = CreateObject("System.Collections.Arraylist")

For i = 1 to Last then  ''Loop in the range
    If strName = "Henry" then
        list.Add ValueToAdd  ''add to the list
    End if 
Next

然后你可以在列表中循环。
For Each name in List
    Msgbox name
Next

1
虽然我来晚了,但你真的尝试过在VBA环境中运行这段代码吗?有很多错误会导致它无法编译。 - Steve Rindsberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接