请问VB数组的问题 我定义了一个二维数组每一行存储的数据个数都不相同如何得到每一行对应的最后一个元素的下标呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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 可用ubound函数如Dim A(1 to 100,3) As Integer ’定义一二维数组,则ubound(A,1)=100 ubound(A,2)=3 比如我有一个3*3的数组adim a(3,3) as Integer第一行只存放了2个元素第二行存放1个第三行存放3个我怎么得到每一行的最后一个元素的下标?我写成Ubound(a(1))不可以 狂晕!//dim a(3,3) as Integer这个数组,每一行都有4个元素,下标从0到3,没有赋值的话,自动初始化为0的一行里面放了几个元素,只有妳自己才知道,你往里面放的时候,记录一下,就可以了 //比如我有一个3*3的数组a//dim a(3,3) as Integer下标从0开始,这是4*4的数组,3*3的数组a应该是dim a(2,2) as Integer 用动态多维数组就可以了。每次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 函数”。关于对象数组,请参阅“用对象编程”。 ReDim a(1) As Integera(0) = 1a(1) = 2ReDim b(0) As Integerb(0) = 3ReDim c(2) As Integerc(0) = 4c(1) = 5c(2) = 6Dim aa(2) As Variantaa(0) = aaa(1) = baa(2) = cDebug.Print UBound(aa(0))Debug.Print UBound(aa(1))Debug.Print UBound(aa(2))Erase aErase bErase c 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)) NextEnd Sub VSFlexGrid 合并单元格 VB 6.0 开发的ActiveX控件是否有 VS 2003 中的 TypeConverter 功能? VB无法使用VSS6.0 请问Redim的重定数组问题 如何获得局域网......高分相送? 控件随着窗体的变大而变大???? (请个位高手多多指!!) 一个很弱的问题,大家来抢分吧 请教个串口通信的问题,急啊?!! 只差1步了(关于xp下的安装程序) 各位兄弟,ADODC1.ADDNEW后没有UPDATA,再用ADDNEW会报错,如何解决? 不规则的多边形面积的计算-----我在多媒体那个区问了,不过人好象不多又到这里来 急问有关类型转换的一个问题
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
如Dim A(1 to 100,3) As Integer ’定义一二维数组,
则ubound(A,1)=100
ubound(A,2)=3
dim a(3,3) as Integer
第一行只存放了2个元素
第二行存放1个
第三行存放3个
我怎么得到每一行的最后一个元素的下标?
我写成Ubound(a(1))不可以
这个数组,每一行都有4个元素,下标从0到3,没有赋值的话,自动初始化为0的一行里面放了几个元素,只有妳自己才知道,
你往里面放的时候,记录一下,就可以了
//dim a(3,3) as Integer
下标从0开始,这是4*4的数组,
3*3的数组a应该是
dim a(2,2) as Integer
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 函数”。关于对象数组,请参阅“用对象编程”。
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
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