Excel VBA中让你意想不到的陷阱

网友投稿 385 2022-12-02

excel VBA中让你意想不到的陷阱

VBA代码由于简单实用,大家都很喜欢,但有些代码怎么看都没有问题,调试时却总是出错?究竟是为什么呢,其实代码本身没有错,在正常情况下都没有问题,错在运行环境本身出了问题,下面举例予以说明:

1、微软在定义属性时,进行了长度限制比如:区域的Address属性,虽然是字符串,却是定长字符串,不能超过256个字符。如果用它来获取单元格地址,只能获取前256个字符。(一般情况下不会出问题,但如果单元格区域是很零散的单元格区域,就可能出错)

2、VBA中属性解释与实际不符比如:Cells.SpecialCells(xlCellTypeLastCell),微软帮助中:用于获取“已用区域中的最后一个单元格”,但实际上是获取“已用区域中的最后一个可见单元格”,如果已用区域最后一个单元格正好被隐藏,就与该属性的定义产生偏差,导致代码达不到预期效果。

Excel VBA中让你意想不到的陷阱

3、兼容32位环境的限制在VB环境中,长整型变量是long,最大支持 2,147,483,647,约21亿,似乎很大了,在excel2000/2003没有问题,但在excel2007及以上版本中就可能出问题,如果你执行这一句:MsgBox Cells.Count,肯定会出错,因为现在支持1048576行*16384列,已经21亿,超过了长整型的限制。而且Rows.count*Columns.count也会出错,其原因也是一样,虽然单个都没有超上限,但结果超长整型上限也不行。

4、VBA代码在VSTO中,由于环境变化,也会出现异常比如:ActiveSheet.HPageBreaks.add,在VBA、COM中都正常,在VSTO中会导致下一行内容丢失。

因此,在编写代码时预先考虑到以上等情况,可以减少你调试的难度,避免走弯路。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何停止Excel屏幕刷新
下一篇:Excel批量导入图片的方法实例教程
相关文章