VBA整数溢出70,000

Dix*_*ine 9 excel vba excel-vba

我有一个包含70,000行数据的工作表和一个计算总行数的简单宏:

Dim LastRow as Integer    
LastRow = SourceSheet.Cells.Find(what:="*", searchdirection:=xlPrevious, searchorder:=xlByRows).Row
MsgBox (LastRow)
Run Code Online (Sandbox Code Playgroud)

这会返回溢出错误.将LastRow更改为Long将返回正确的值70,000.

根据微软的网站,VBA整数应该能够保持-2,147,483,648和2,147,483,647之间的值.我的输出完全在这个范围内,为什么它会失败?

谢谢!

Mat*_*ewD 23

您正在查看的网站是针对Visual Studio(.NET)的.

VBA Integer是32,768.你需要使用很长时间.

VBA Long变量保存从-2,147,483,648到2,147,483,647的整数,并使用4个字节(32位)的内存.

Dim lLastRow as Long
Run Code Online (Sandbox Code Playgroud)

  • @DixieFlatline只是一个FYI,你也可以随时通过SourceSheet.UsedRange.Rows.Count访问最后一行,最后一列是SourceSheet.UsedRange.Columns.Count (2认同)
  • @DixieFlatline [实际上 `UsedRange` 根本不可靠](http://stackoverflow.com/a/11169920/1188513) (2认同)