为什么我的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)
展开
 我来答
bengdeng
推荐于2016-11-04 · TA获得超过2119个赞
知道大有可为答主
回答量:1482
采纳率:50%
帮助的人:1301万
展开全部
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
百度网友e3ce692
2014-07-30 · TA获得超过156个赞
知道小有建树答主
回答量:215
采纳率:100%
帮助的人:191万
展开全部
rw是从0开始的, i是从1到rw,少一个下标
rw = Cells(Rows.Count, 1).End(xlUp).Row ' 假设row= 365(rows.count从0开始)
arry(0,1)测一个
追问
不明白  , RW是固定的, 不参加循环, 请问该如何改才好 ?
追答
它是固定打,但是从0开始
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ygbh9999
2014-07-30 · TA获得超过324个赞
知道小有建树答主
回答量:235
采纳率:100%
帮助的人:222万
展开全部
ReDim arry(1 To 2, 1 To rw)
ReDim arry(1 To rw)
怎么连用2句?这样你定义的数组就是一维的了,当然要越界~~
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式