【问题标题】:How to find the length of an array vba如何找到数组vba的长度
【发布时间】:2020-07-27 00:40:48
【问题描述】:
Sub Test4()

Public Function GetLength(a As Variant) As Integer
   If IsEmpty(a) Then
      GetLength = 0
   Else
      GetLength = UBound(a) - LBound(a) + 1
   End If




End Function

基本上试图找到两个数组的长度,并且对如何使用此代码执行此操作有点困惑。不确定在哪里放置什么以及如何使其正常工作。任何帮助将不胜感激!

【问题讨论】:

  • 如果您要检查IsEmpty 是否为a,您可能还想检查是否为Not IsArray
  • 感谢您的帮助,如果我遇到任何困难会回来
  • @Lex,如果它解决了您的问题,您应该回馈您并接受答案。并在您能够这样做时为那些帮助过的人投票。这就是网站的运作方式 =)
  • 这能回答你的问题吗? Get length of array?

标签: arrays excel vba


【解决方案1】:

您是否因为需要将函数与子函数分开而感到困惑?您应该像这样调用该函数:

Sub Test4()
    Dim arr As Variant
    arr = Array(1, 2, 3)
    If IsArray(arr) Then Debug.Print GetLength(arr)
End Sub

Public Function GetLength(a As Variant) As Long
    GetLength = UBound(a) - LBound(a) + 1    
End Function

如果您要始终初始化 arr,我省略了 IsEmpty,但如果您愿意,可以将其放回原处。一般来说,如果您对如何调用函数并返回它们的值感到困惑。看看MS Docs

【讨论】:

  • @Chronocidal,Not IsArray 的想法很好。不介意就实施。不过,我会在返回任何值之前亲自检查它,因为 OP 想要单独检查数组和数组。
【解决方案2】:

参数a 代表你的数组。该函数将返回它作为参数接收的数组的 first 维度的长度:

Sub TestIt()
    Dim MyArray As Variant
    MyArray = Split("A,B,C,D,E,F", ",") 'create an Array of Length 6
    MsgBox GetLength(MyArray) 'Output the length of the array, "6"
End Sub

如前所述,这可能会给二维数组带来意想不到的结果:

[[A][B][C]
 [D][E][F]]

这是一个 2×3 数组,所以 GetLength 会告诉你长度是 2。但是,数组中元素的数量是6

(注意 - 如果在 VBA 中使用它,那么使用 Integer 而不是 Long 没有任何优势,我建议您更改该行 - 特别是因为 UBoundLBound 都返回Longs. 数组太大,可能会出现溢出错误!)

【讨论】:

  • 非常感谢,我试试看
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 2013-06-05
相关资源
最近更新 更多