我定义了一个二维数组
每一行存储的数据个数都不相同
如何得到每一行对应的最后一个元素的下标呢?

解决方案 »

  1.   


    UBound 函数      返回一个 Long 型数据,其值为指定的数组维可用的最大下标。语法UBound(arrayname[, dimension])UBound 函数的语法包含下面部分:部分 描述 
    arrayname 必需的。数组变量的名称,遵循标准变量命名约定。 
    dimension 可选的;Variant (Long)。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略 dimension,就认为是 1。 
    说明UBound 函数与 LBound 函数一起使用,用来确定一个数组的大小。LBound 用来确定数组某一维的上界。对具有下述维数的数组而言,UBound 的返回值见下表:Dim A(1 To 100, 0 To 3, -3 To 4)语句 返回值 
    UBound(A, 1) 100 
    UBound(A, 2) 3 
    UBound(A, 3) 4 
      

  2.   

    可用ubound函数
    如Dim A(1 to 100,3) As Integer  ’定义一二维数组,
    则ubound(A,1)=100
      ubound(A,2)=3
      

  3.   

    比如我有一个3*3的数组a
    dim a(3,3) as Integer
    第一行只存放了2个元素
    第二行存放1个
    第三行存放3个
    我怎么得到每一行的最后一个元素的下标?
    我写成Ubound(a(1))不可以
      

  4.   

    狂晕!//dim a(3,3) as Integer
    这个数组,每一行都有4个元素,下标从0到3,没有赋值的话,自动初始化为0的一行里面放了几个元素,只有妳自己才知道,
    你往里面放的时候,记录一下,就可以了
      

  5.   

    //比如我有一个3*3的数组a
    //dim a(3,3) as Integer
    下标从0开始,这是4*4的数组,
    3*3的数组a应该是
    dim a(2,2) as Integer
      

  6.   

    用动态多维数组就可以了。每次redim,然后可以用ubound判断
    MSDN:保留动态数组的内容
    每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim 语句就可做到这点。例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:ReDim Preserve DynArray (UBound (DynArray) + 1)在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)而不可这样编程:ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)详细信息 关于动态数组的更详细信息,请参阅语言参考中的“ReDim 函数”。关于对象数组,请参阅“用对象编程”。
      

  7.   

    ReDim a(1) As Integer
    a(0) = 1
    a(1) = 2ReDim b(0) As Integer
    b(0) = 3ReDim c(2) As Integer
    c(0) = 4
    c(1) = 5
    c(2) = 6Dim aa(2) As Variant
    aa(0) = a
    aa(1) = b
    aa(2) = cDebug.Print UBound(aa(0))
    Debug.Print UBound(aa(1))
    Debug.Print UBound(aa(2))Erase a
    Erase b
    Erase c
      

  8.   

    Sub Main()
        Dim a(2) As Variant
        Dim i As Long
        
        a(0) = Array(1, 2)
        a(1) = Array(3, 4, 5)
        a(2) = Array(6)
        
        For i = 0 To UBound(a)
            Debug.Print i, UBound(a(i))
        Next
    End Sub