我有一个简单的行计数器。
Total = Sheets("support").Range("A1", Sheets("support").Range("A1").End(xlDown)).Cells.Count
在我计数超过一万行之前,它是完美的,因为在这种情况下,我会收到以下错误消息:
溢出 是什么原因造成的?例如,如何计算数十万行?
答案 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