range of each element is the same as the range of its data type. Note: At this time the Decimal data type can only be used within a Variant, that is, you cannot declare a variable to be of type Decimal. You can, however, create a Variant whose subtype is Decimal using the CDec function. I would just use Double if I was you if you want to use numbers longer than 2,147,483,647. Sure, if you don't care about precision. 12-digit numbers might be OK, but if you're multiplying and dividing them a lot, you're going to get inaccurate results. If you're doing integer maths, there's really no excuse not to use an integer datatype. Why would you choose Decimal over Currency, if it means you'll incur the variant overhead? Craig wants to store 12-digit integers, not 20-digit integers. 12-digit integers fit comfortably within the limits of Currency. Currency is an inbuilt data type. "Decimal" is actually a COM data type that is supported in VB6 through using variants. It's not a "native" data type, but if you need really big numbers, or really small numbers with no rounding errors, then you need to use decimals (or, preferably, a different language altogether). Since OP only needs to store large integers I would use Singles, since they are faster and smaller than Currency or Double. I doubt he's going to see too many files that are larger than 1.0E38 bytes. Since OP only needs to store large integers I would use