Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4034|回复: 10

[已解决]代码测试

[复制链接]
发表于 2014-3-31 23:28 | 显示全部楼层 |阅读模式
本帖最后由 642070295 于 2014-4-7 14:45 编辑

麻烦各位大侠帮看下附件代码(设置断点运行后发现rn=316,arr2(rn,2)=下标越界)怎么回事?怎么纠正代码? 附件.rar (32.64 KB, 下载次数: 5)
发表于 2014-3-31 23:40 | 显示全部楼层
测试过,没有报错
楼主你总共的数据才315行,也就是说ubound(arr2)=315,即arr2的一维方向最大有315个,所以当rg=316时就超出了数组的大小限制,所以会出现下标越界的错误
但按楼主的循环,rg不应该能循环到316,循环到315后就完成循环了。。。
代码粗开没问题,楼主是不是调试时手动赋值给rg了?
回复

使用道具 举报

发表于 2014-3-31 23:43 | 显示全部楼层
回复

使用道具 举报

发表于 2014-3-31 23:44 | 显示全部楼层
运行没有问题啊,,
回复

使用道具 举报

 楼主| 发表于 2014-3-31 23:47 | 显示全部楼层
不信这样还重名 发表于 2014-3-31 23:40
测试过,没有报错
楼主你总共的数据才315行,也就是说ubound(arr2)=315,即arr2的一维方向最大有315个,所以 ...

没有进行过手动赋值呀?断点运行后把光标移到rn处就呈现rn=316了,太奇怪了!咋回事?
回复

使用道具 举报

 楼主| 发表于 2014-3-31 23:49 | 显示全部楼层
hwc2ycy 发表于 2014-3-31 23:43
我这测试没问题了。

为什么rn=316呢?
回复

使用道具 举报

发表于 2014-4-1 01:14 | 显示全部楼层
学习
回复

使用道具 举报

发表于 2014-4-1 16:50 | 显示全部楼层
642070295 发表于 2014-3-31 23:49
为什么rn=316呢?

rn从1循环到315,当rn=315时执行完代码后,next rn,rn=316,大于315就跳出循环。
所以rn循环了315次,最后跳出循环时,rn的值就是ubound(arr2)+1,即316
这时你再把鼠标移到循环里面的arr2(rn,1)上,会出现下标越界的提示
回复

使用道具 举报

 楼主| 发表于 2014-4-1 17:15 | 显示全部楼层
eaglexs 发表于 2014-4-1 16:50
rn从1循环到315,当rn=315时执行完代码后,next rn,rn=316,大于315就跳出循环。
所以rn循环了315次,最 ...

可是,我以前用的循环看到的变量好像都是=实际数据行数哦,这怎么区别呢?
这种下标越界会不会把数据错误计算?

回复

使用道具 举报

发表于 2014-4-1 22:09 | 显示全部楼层    本楼为最佳答案   
642070295 发表于 2014-4-1 17:15
可是,我以前用的循环看到的变量好像都是=实际数据行数哦,这怎么区别呢?
这种下标越界会不会把数据错误 ...

不会。这时整个循环已经完成,开始执行循环之后的语句了。此时你把鼠标放到循环里的语句上,VBE调用当前的数值计算arr2,所以都会显示下标越界,实际上不可能再返回去执行循环内的语句。这只是你中断程序时,VBE显示给你看看的内容而已。
实际上,当FOR……TO循环完成之后,这个变量必定比结束时的那个数大,你可以在循环之后用msgbox rn看一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-10 08:58 , Processed in 0.376027 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表