VBA研究再论取EXCEL有效行列数方法
Posted 宋哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA研究再论取EXCEL有效行列数方法相关的知识,希望对你有一定的参考价值。
作者:iamlaosong
我有一个工具,Excel2003格式,因处理数据超过65536条,所以让用户另存为xlsm格式,结果用不了,仔细检查发现问题出在取EXCEL有效行数语句上,该语句如下:
MaxRow = [A65536].End(xlUp).Row
数据有30多万条,此语句执行结果是MaxRow值为0,这是因为65536行到1行都有数据。只要将65536改成超过数据的行数就可以得到正确结果,比如:
MaxRow = [A600000].End(xlUp).Row
正确的方法是用Excel文件数据最大行数表达式,即改成下面语句:
MaxRow = Range("A" & Rows.Count).End(xlUp).Row
其中Rows.Count就是当前版本Excel文件数据最大行数,2003版这个值是65536(2的16次方),2007以后的版本,这个值是1048576(2的20次方)。
MaxCol = Range("A" & Columns.Count).End(xlToLeft).Column
同理,Columns.Count就是当前版本Excel文件数据最大列数,2003版这个值是256(2的8次方),2007以后的版本,这个值是16384(2的14次方)。
上面两句还可以写成下面形式,效果基本相同:
MaxRow = [A1].End(xlDown).Row
MaxCol = [A1].End(xlToRight).Column
以上是关于VBA研究再论取EXCEL有效行列数方法的主要内容,如果未能解决你的问题,请参考以下文章