【问题标题】:Is there any limits for the Range.Cells.Count?Range.Cells.Count 是否有任何限制?
【发布时间】:2018-12-08 18:32:26
【问题描述】:

我有一个简单的行计数器。

Total = Sheets("support").Range("A1", Sheets("support").Range("A1").End(xlDown)).Cells.Count

在我计算更多的一万行之前,它可以完美运行,因为在这种情况下,我会收到以下错误消息:

溢出 是什么原因造成的?如何计算更多的行数?

【问题讨论】:

  • total 是如何定义的?如果是int,则改为long

标签: vba range row counter


【解决方案1】:

.Cells 是多余的,.Count 成员调用可以直接从前面的Range.End 成员调用返回的Range 对象进行。

也就是说,这取决于 Total 被声明为什么。如果是Integer,那么它只有16位来存储有符号整数,这意味着它的上限是32,767——即2^15-1

Dim Total As Integer ' 16-bit 

使用 Long 整数将给它 32 位来做同样的事情,使其上限为 2^31-1,这对于大多数用途来说应该绰绰有余。

Dim Total As Long ' 32-bit

如果您溢出 Long,64 位系统上的 VBA7 会为您提供 LongLong,这是一种 64 位有符号整数类型,在 2^63-1 被破坏之前不会溢出。

Dim Total As LongLong ' 64-bit

【讨论】:

    【解决方案2】:

    您应该使用 CountLarge 属性而不是 Count,即

    .Cells.CountLarge
    

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 2011-10-04
      • 2021-11-26
      • 2015-11-09
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多