【问题标题】:How to find out length of an array in VBA? Ubound does not give actual length.如何在 VBA 中找出数组的长度? Ubound 没有给出实际长度。
【发布时间】:2014-04-08 14:40:22
【问题描述】:

我基本上想编写逻辑,如果某个元素已经存在于数组中,我不想再次将其放入其中。我的数组是一维的。我无法理解过滤器功能的工作原理。请帮忙。谢谢。

【问题讨论】:

  • 添加您遇到问题的代码会有所帮助。您可以使用 UBound 和 lbound 计算出数组的大小。
  • 我将数组声明为 array1(410) 作为字符串。但是,在为数组赋值时,我写的是 For i =1 to Count array1(i) = worksheets("Sheet1").Cells(i,6).value End For。现在我的实际数组长度是计数但是当我写 Ubound(array1) 它给出 410
  • 正如 Tim 所说,您可以使用 Ubound 和 LBound 函数获取数组的大小。当您定义数组 array1(410) 时,它将是一个大小为 410 的数组。我不确定您要在这里做什么。
  • I basically want to write logic such that if certain element is already present in array i dont want to again put it into it. - 查看Collection/Dictionary对象
  • 我想要做的是.. 我将计数作为变量,其中包含 Sheet1 中存在的行数的值,这些行数在 column1 中具有值。现在假设存在 4 行值,然后计数为 4。所以现在我将值从 1 输入到数组 1 到计数。现在假设用户在 excel 中再追加三行,然后计数值为 7。现在我必须再次填充 array1 的值,但只有这三个新值我必须添加,而不是全部 7。您能建议我如何实现这一目标吗?

标签: arrays vba


【解决方案1】:

我不确定我是否完全明白你想要做什么。

但我的理解让我推荐你使用 Dictionary(它基本上是一个 Hashmap)

它适用于键和值。 这个字典的每个元素都包含一个唯一的键(一个用于专门访问您想要的数据的字符串)和一个附加到它的值(可以是一个字符串、一个数字......)

这里是如何使用它:

在您的 VBA 页面中,转到工具 -> 参考 -> 从可用参考列表中添加“Microsoft Scripting Runtime”。

然后在你的代码中:

Dim myDico as Dictionary
set myDico = new Dictionary

myDico.add "myKey", 5

msgbox myDico.Item("myKey") '5

【讨论】:

    猜你喜欢
    • 2013-05-02
    • 2020-07-27
    • 2015-05-14
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多