Range.Cells.Count有任何限制吗?

时间:2018-06-29 14:20:09

标签: vba range row counter

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

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

在我计数超过一万行之前,它是完美的,因为在这种情况下,我会收到以下错误消息:

  

溢出   是什么原因造成的?例如,如何计算数十万行?

2 个答案:

答案 0 :(得分:1)

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

也就是说,这取决于声明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

答案 1 :(得分:1)

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

.Cells.CountLarge