DEC2BIN and BIN2DEC work with 10-bit signed numbers, i.e. -512 thru 511.
However, the binary representation returned by DEC2BIN is a character string.
DEC2BIN(7) returns "111", not 111.
If you try to do math with the resulting binary number, it gets treated like any string used in a numeric context: it is converted from a string to a number using base-10.
DEC2BIN(7+1) returns "1000", but DEC2BIN(7)+1 returns 112. (i.e."111" + 1)
BIN2DEC(99+12) returns 7. (internally there are three steps: 99+12 -> 111 -> "111" -> 7.)
For your needs, I recommend avoiding DEC2BIN and BIN2DEC, and do the conversions using your own VBA functions, such as: http://www.vb-helper.com/howto_decimal_to_binary.html
You could enhance these functions with additional arguments to specify signed/unsigned and 8/16/32-bit, and to return NaN or an error on binary overflow.
The VBA "Long" datatype is 64-bit signed integer (about 18 decimal digits), but you won't be able to take advantage of that going to/from Excel, which handles 15 digits without loss of precision.
VBA "Long" will have no trouble with 32-bit unsigned.
>>>EDIT Correction: VBA Long is 32-bit signed integer.
VBA Double has a 52-bit mantissa, so can be used for at least 48-bit signed integer arithmetic with no loss of precision.