在生病的Excel(我使用Office 10)VBA宏中,我需要捕获用户设法创建具有最大列数或行数的工作表的情况。
我不记得这是怎么发生的,我也不在乎;但我们大多数人都看过Excel工作表的有效工作表大小为16384个单元格宽度和/或1048576个单元格高度 - 即使工作表上只有少数非空单元格。
我只想在VBA代码中检测到这种情况。
工作表Rows.Count
和Columns.Count
当然会返回数字,我可以分别检查它们是否等于16384
或1048576
。
但是,这些限制与版本有关。
所以我的问题是:
如何在不编码依赖于版本的if语句的情况下获取VBA中给定Excel工作表中行数和列数的最大限制?每个限制值可能有一个常量,但我还没找到它。
注意我不是在寻找Worksheet.UsedRange
的大小。我想确定UsedRange
是否已扩展到整个可用的“表空间”,这通常只是偶然发生,但是 - 它发生了,我想检测那些情况。
我也不是在寻找每个Excel版本的限制。 (这很容易获取。)我不想对这些值和版本号进行硬编码。
答案 0 :(得分:10)
实现此目的的最简单方法是将UsedRange的行数和列数与您的工作表的行数和列数进行比较。
例如:
If ActiveSheet.UsedRange.Rows.Count = ActiveSheet.Rows.Count Then
... However you want to deal with this scenario ...
End If
与列数类似。