Reputation: 484
I have a worksheet with 70,000 rows of data and a simple macro that counts the total number of rows:
Dim LastRow as Integer
LastRow = SourceSheet.Cells.Find(what:="*", searchdirection:=xlPrevious, searchorder:=xlByRows).Row
MsgBox (LastRow)
This returns an overflow error. Changing LastRow to Long returns the correct value of 70,000.
According to Microsoft's website, a VBA integer should be able to hold values between -2,147,483,648 and 2,147,483,647. My output is well within this range, so why would it fail?
Thanks!
Upvotes: 11
Views: 14724
Reputation: 6761
The website you are looking at is for Visual Studio (.NET) .
VBA Integer is 32,768. You need to use a long.
A VBA Long variable holds whole numbers from -2,147,483,648 to 2,147,483,647 and uses 4 bytes (32 bits) of memory.
Dim lLastRow as Long
Upvotes: 32