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有效行列数方法的主要内容,如果未能解决你的问题,请参考以下文章

VBA研究再论“找不到工程或库“ 解决方案

VBA研究再论“找不到工程或库“ 解决方案

VBA研究用VBA取得EXCEL随意列有效行数

在VBA(excel)中循环遍历行的最有效/最快的方法是啥?

vba行列循环语句

VBA研究VBA中如何用求和函数SUM求和