The information in this article applies to:
SUMMARYVisual Basic for Applications only supports signed 2- and 4-byte Integers, while other languages, such as C, support both signed and unsigned Integers. This article provides conversion functions between signed and unsigned 4-byte Integers and between signed and unsigned 2-byte Integers. MORE INFORMATION
In VBA, the range of Integer values is from -32768 to +32767, and for Long
values from -2147483648 to 2147483647. When making API calls or calling a
DLL written in C, you may be requested to pass in or receive unsigned
values in the range of 0 to 65535 or 0 to 4294967296. The conversion
functions provided below convert an unsigned Integer to a Long and also
from an unsigned Long to a Double for purposes of input and display or
other calculations.
UnsignedToLong UnsignedToLongThe function takes a Double containing a value in the range of an unsigned Long and returns a Long that you can pass to an API that requires an unsigned Long.LongToUnsignedThe function takes an unsigned Long from an API and converts it to a Double for display or arithmetic purposes.UnsignedToIntegerThe function takes a Long containing a value in the range of an unsigned Integer and returns an Integer that you can pass to an API that requires an unsigned Integer.IntegerToUnsignedThe function takes an unsigned Integer from and API and converts it to a Long for display or arithmetic purposes.
In the above example, the MyAPI API accepts an unsigned Long as a parameter
and returns an unsigned Long as a result code. Because VBA only understands
signed Longs, the DECLARE statement uses signed Longs. The UnsignedToLong
range of an unsigned Long) into a signed Long for purposes of calling the
API. The LongToUnsigned function performs the opposite conversion.
Without these functions, the input argument would have to have been specified as a signed Long, in this case -994967296, and the return value would have to be displayed as a signed value, possibly also as a negative number and non-intuitive. Step by Step Example
REFERENCESFor additional information, please see the following article in the Microsoft Knowledge Base: Q112673 How To Pass & Return Unsigned Integers to DLLs from VB Additional query words: kbDSupport kbDSD kbVBp500 kbVBA500 kbVBp400 kbVBp kbAPI kbDll
Keywords : |
Last Reviewed: October 13, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |