以编程方式获取工作表的最大允许列数和行数

6
在一个有问题的Excel(我使用Office 10)VBA宏中,我需要捕获用户意外创建了具有最大列数或行数的工作表的情况。我不记得是如何发生的,也不在意;但我们大多数人都见过Excel工作表,其活动工作表大小为16384个单元格的宽度和/或1048576个单元格的高度--即使工作表上只有少数非空单元格。我只想在VBA代码中检测到这种情况。当然,工作表的Rows.CountColumns.Count会返回这些数字,我可以分别检查它们是否等于163841048576。然而,这些限制是版本相关的。所以我的问题是:如何在VBA中获取给定Excel工作表中行数和列数的最大限制,而不编写版本相关的if语句?可能有每个限制值的常量,但我还没有找到它们。请注意,我不是在寻找Worksheet.UsedRange的大小。我想确定UsedRange是否已扩展到整个可用的“工作表空间”,这通常只会意外发生,但是--它确实发生了,我想检测到这种情况。我也不在寻找每个Excel版本的限制。(这很容易通过谷歌搜索获得。)我不想硬编码这些值和版本号。

1
也许我理解有误,但是用 ActiveSheet.UsedRange.Rows.CountActiveSheet.Rows.Count 进行比较有何不同呢?列也是同样的情况吗? - John Bustos
很高兴我能帮到你 - 我现在会发布它... - John Bustos
1个回答

10
最简单的方法是通过将“UsedRange”的行数和列数与您的工作表的行数和列数进行比较来完成此操作。
例如:
If ActiveSheet.UsedRange.Rows.Count = ActiveSheet.Rows.Count Then
   ... However you want to deal with this scenario ...
End If

同样的,列数也是如此。


我没有想到ActiveSheet.Rows.Count 总是 返回最大可能的行索引。谢谢。 - TheBlastOne
很高兴我能帮上忙 - 祝你好运! - John Bustos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接