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