vba中关于二维数组重定义的问题 在线等!!

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:18:50
If wkISheet.Cells(i, 31) <> strSearchKey(j, 3) Or wkISheet.Cells(i, 22) <> strSearchKey(j, 3) Then
ReDim Preserve strSearchKey(1 To UBound(strSearchKey) + 1, 1 To 4)
strSearchKey(UBound(strSearchKey), 1) = wkISheet.Cells(i, 3)
strSearchKey(UBound(strSearchKey), 2) = wkISheet.Cells(i, 2)
If wkISheet.Cells(i, 31) <> "*" And wkISheet.Cells(i, 31) <> strSearchKey(j, 3) Then
strSearchKey(UBound(strSearchKey), 3) = wkISheet.Cells(i, 31)
strSearchKey(UBound(strSearchKey), 4) = wkISheet.Cells(i, 32)
End If
If wkISheet.Cells(i, 31) = "*" And wkISheet.Cells(i, 22) <> strSearchKey(j, 3) Then
strSearchKey(UBound(strSearchKey), 3) = wkISheet.Cells(i, 22)
strSearchKey(UBound

什么错误呢?
语法是正确的,但是第一次用的时候,数组还没建立,UBound(strSearchKey) 这里会出错,下标越界(是不是这个错误?)
在开始处加句
redim strSearchKey(1 to 4,1 to 1)

还有用Preserve 保持数组的内容,应该是改变数组最后一维的上界,如果改变了其它维或最后一维的下界,那么运行时就会出错,
应该这样编程
ReDim Preserve strSearchKey(1 to 4,1 To UBound(strSearchKey,2) + 1)

是的

我以为如
dim xx()
redim xx(9,8)