为什么我的VBA代码会下标越界?
OptionBase1Subfind1()Dimarry()AsStringDimIAsLongDimrwAsLongrw=Cells(Rows.Count,1).End...
Option Base 1
Sub find1()
Dim arry() As String
Dim I As Long
Dim rw As Long
rw = Cells(Rows.Count, 1).End(xlUp).Row ' 假设row= 365
ReDim arry(1 To 2, 1 To rw)
ReDim arry(1 To rw)
For I = 1 To rw
arry(1, 1) = Cells(I, 1) ''下标越界 , 测试显示进入第一个数组arry(1,1) 就越界了
Next I
For I = 1 To rw
arry(2, I) = Cells(I, 3)
Next I
End Sub
arry(1, I) = Cells(I, 1) ''下标越界 , 测试显示进入第一个数组arry(1,1) 就越界了
arry(1,1) 改成:arry(1,I) 展开
Sub find1()
Dim arry() As String
Dim I As Long
Dim rw As Long
rw = Cells(Rows.Count, 1).End(xlUp).Row ' 假设row= 365
ReDim arry(1 To 2, 1 To rw)
ReDim arry(1 To rw)
For I = 1 To rw
arry(1, 1) = Cells(I, 1) ''下标越界 , 测试显示进入第一个数组arry(1,1) 就越界了
Next I
For I = 1 To rw
arry(2, I) = Cells(I, 3)
Next I
End Sub
arry(1, I) = Cells(I, 1) ''下标越界 , 测试显示进入第一个数组arry(1,1) 就越界了
arry(1,1) 改成:arry(1,I) 展开
展开全部
Option Base 1
Sub find1()
Dim arry() As String
Dim I As Long
Dim rw As Long
rw = Cells(Rows.Count, 1).End(xlUp).Row ' 假设row= 365
ReDim arry(1 To 2, 1 To rw)
'删除这一句==>ReDim arry(1 To rw)
For I = 1 To rw
arry(1, 1) = Cells(I, 1) ''下标越界 , 测试显示进入第一个数组arry(1,1) 就越界了
Next I
For I = 1 To rw
arry(2, I) = Cells(I, 3)
Next I
End Sub
展开全部
rw是从0开始的, i是从1到rw,少一个下标
rw = Cells(Rows.Count, 1).End(xlUp).Row ' 假设row= 365(rows.count从0开始)
arry(0,1)测一个
rw = Cells(Rows.Count, 1).End(xlUp).Row ' 假设row= 365(rows.count从0开始)
arry(0,1)测一个
追问
不明白 , RW是固定的, 不参加循环, 请问该如何改才好 ?
追答
它是固定打,但是从0开始
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ReDim arry(1 To 2, 1 To rw)
ReDim arry(1 To rw)
怎么连用2句?这样你定义的数组就是一维的了,当然要越界~~
ReDim arry(1 To rw)
怎么连用2句?这样你定义的数组就是一维的了,当然要越界~~
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询