Excel精英培训网

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

[已解决]在编写VBA代码时,经常出现下标越界,应该注意哪些方面?

[复制链接]
发表于 2013-3-26 15:15 | 显示全部楼层 |阅读模式
在编写VBA代码时,经常出现下标越界,应该注意哪些方面?谢谢!
最佳答案
2013-3-26 15:23
动态数组写回单元格,没有判断元素个数。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-26 15:22 | 显示全部楼层
数组的围数,集合中的索引号或名称呢。
回复

使用道具 举报

发表于 2013-3-26 15:23 | 显示全部楼层
字典写回单元格,没有判断COUNT属性。
回复

使用道具 举报

发表于 2013-3-26 15:23 | 显示全部楼层    本楼为最佳答案   
动态数组写回单元格,没有判断元素个数。
回复

使用道具 举报

 楼主| 发表于 2013-3-26 16:08 | 显示全部楼层
hwc2ycy 发表于 2013-3-26 15:23
动态数组写回单元格,没有判断元素个数。

"动态数组写回单元格,没有判断元素个数",怎么判断元素个数,请举一个简单例子
回复

使用道具 举报

 楼主| 发表于 2013-3-26 16:14 | 显示全部楼层
hwc2ycy 发表于 2013-3-26 15:23
字典写回单元格,没有判断COUNT属性。

“字典写回单元格,没有判断COUNT属性”。判断COUNT属性,请举一个简单的例子,谢谢!
回复

使用道具 举报

发表于 2013-3-26 16:23 | 显示全部楼层
ymq123 发表于 2013-3-26 16:14
“字典写回单元格,没有判断COUNT属性”。判断COUNT属性,请举一个简单的例子,谢谢!

这个是13类型错误了。
  1. Sub dictest()
  2.     Dim dic As Object
  3.     Set dic = CreateObject("scripting.dictionary")
  4.     Range("a1").Resize(dic.Count) = WorksheetFunction.Transpose(dic.keys)
  5. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

发表于 2013-3-26 16:25 | 显示全部楼层
其实写代码的时候,只要考虑到了数组的行列上下标的情况,一般就可以避免。

另外有时候是逻辑关系不够严谨。
特别是有时抄用人家的代码,但是又没改好的情况下,很容易出错。
回复

使用道具 举报

发表于 2013-3-26 16:37 | 显示全部楼层
下标越界

也就是说你指定的 变量 或者 常量 不在允许范围内

比如,你要往一张表名为"张三" 的 A1 单元格输入内容

  1. Sheets("张三").Range("A1").Value = 2
复制代码
而你的工作薄中并没有 张三 工作表的存在,就会提示 下标越界

同样的,如果你要往第6张工作表的 A2 输入内容

  1. Sheets(6).Range("A1").Value = 2
复制代码
而你的工作薄中只有5张工作表,那也会提示下标越界

对于数组的话,如果你的变量不在数组上下标范围内,则也会提示下标越界

  1. Sub c()
  2. Dim arr(-1 To 3)
  3.   arr(4) = 2
  4.   arr(-2) = 3
  5. End Sub
复制代码
这个代码中数组的范围是 -1 到 3, 很明显 -2, 和 4 都不在这个范围内,那么肯定会提示错误

二维数组也是一样的

  1. Sub c()
  2. Dim arr(-1 To 3, 1 To 5)
  3.   arr(1, 6) = 2
  4.   arr(-2, 3) = 2
  5. End Sub
复制代码
在实际中还有很多下标越界的,到时候你自己研究一下就明白了

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 04:29 , Processed in 0.458609 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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