阿杰 发表于 2011-10-10 14:42:35

统计数组元素个数的自定义函数CountArray


'本函数由阿杰编写于:2011.10.10
Function CountArray(数组名)
Dim i, s
    For Each i In 数组名
      s = s + 1
    Next
    CountArray = s
End Function

例子:
Dim A(-5 To 8) As Integer
    Debug.Print CountArray(A)
   
    'Dim A(1 To 6, 6) As String定义的数组包含的元素个数是( )。
    'A. 36
    'B. 49
    'C. 42
    'D. 50
    '最佳答案 C
    '这个应该是VB或者VB.net的语法
    'VB中数组在无特殊声明情况下从0开始
    '所以Dim A(1 To 6, 6) As String可翻译为Dim A(1 To 6, 0 To 6) As String
    '及一个二维字符型数组,第一维下标从1到6共6个,第二维从0到6共7个
    '所以元素个数 = 6 * 7 = 42
    Dim A2(1 To 6, 6) As String
    Debug.Print CountArray(A2)
   
    Dim A3(6 To 61, 8) As String
    Debug.Print CountArray(A3)
   
    Dim A4(-5 To 8)
    Debug.Print CountArray(A4)
   
    Dim a5(-1 To 1, 3)
    Debug.Print CountArray(a5)

Tesla.Angela 发表于 2011-10-11 00:24:50

不错!

wszjljx 发表于 2011-10-13 21:38:14

貌似有LBound和UBound函数 直接获取上限和下限 上限-下限+1 就是数组元素个数了...

阿杰 发表于 2011-10-14 09:19:17

不错 LBound 和 UBound 是取下标和上标的不是数组元素个数
你试下下面的代码就知道了
Dim A(-5 To 8) As Integer
    Debug.Print LBound(A), UBound(A)

结果显示:-5 8

如果用    Debug.Print CountArray(A)
结果显示 14   表示A数组有14个元素

Tesla.Angela 发表于 2011-10-14 18:39:35

那就直接:
abs(LBound(A)) + abs(UBound(A)) + 1

WallesCai 发表于 2012-8-1 16:58:13

Ubound(A) - LBound(A) + 1
页: [1]
查看完整版本: 统计数组元素个数的自定义函数CountArray