For most casual things, you don't need a Byte
data type - even if the values you intend to use are within Byte
range.
You don't typicaly need a 16-bit Integer
either for that matter - whenever you need an integer type in VBA, a Long
(32-bit, signed integer) is ideal, and consuming more bytes than you really need isn't a concern when available memory is measured in Gigabytes... which wasn't exactly the case in 1993.
Rule of thumb, if you need an integer type, use a Long
; modern processors are optimized for working with 32-bit integers, and internally there's no difference whatsoever, so using Byte
for values that fit 8-bit integers, Integer
for values that fit a 16-bit integer, and Long
for values that fit a 32-bit integer, ...is really just useless additional work that isn't saving any memory.
Byte
is a low-level data type very often used with arrays, that is useful for things like dealing with string encodings, for example.
Some standard library functions work better with Byte
values; VBA.Information.RGB
comes to mind:

While the function is happy to work with any Integer
, any argument value greater than 255 will cap at 255, so RGB(1000, 0, 0)
outputs 255
: feeding it with Byte
values kind of makes sense then, but only for self-documentation purposes - nothing to do with memory consumption.