vba is specific bit set in long integer code example

Example 1: excel vba last byte from INTEGER

LoByte = n And &HFF					'<-- if n is a 2-byte Integer (left byte)
HiByte = (n And &HFF00&) \ &H100	'<-- if n is a 2-byte Integer (right byte)

Example 2: vba bits to integer

'Extremely fast VBA function to convert a binary string to a 16-bit Integer:

Function BitsToInteger%(bits$)
    Dim i&
    Static b() As Byte
    If LenB(bits) > 32 Then Exit Function
    If LenB(bits) = 32 Then
        b = bits
    Else
        b = String$(16 - Len(bits), "0") & bits
    End If
    For i = 2 To 30 Step 2
        BitsToInteger = 2 * BitsToInteger Or (b(i) Xor 48)
    Next
    If (b(0) Xor 48) Then BitsToInteger = BitsToInteger Or &H8000
End Function

'Example:

MsgBox BitsToInteger("1111111111111111")    '<--displays: -1
MsgBox BitsToInteger("0111111111111111")    '<--displays:  32767

Example 3: excel vba high word from Long Integer

'If n is a 4-byte Long Integer, the Low (Left) Word is:
If n And &H8000& Then
  	LoWord = n Or &HFFFF0000
Else
    LoWord = n And &HFFFF&
End If

'If n is a 4-byte Long Integer, the High (Right) Word is:
HiWord = (n And &HFFFF0000) \ &H10000

Example 4: vba is specific bit set in long integer

'Extremely fast VBA function to test if a specified bit is set 
'within a 32-bit Long integer.

'Bits are numbered from 0 to 31, so the first (least significant) bit
'is bit 0.

'Note: we do not inspect bit 31, the sign bit.
'Note: any number of bits can be specified in one call.


Function LongBitIsSet(theLong&, bit As Byte) As Boolean
    Static i&, b&()
    If (Not Not b) = 0 Then
        ReDim b(0 To 30)
        For i = 0 To 30
            b(i) = 2 ^ i
        Next
    End If
    If bit < 31 Then LongBitIsSet = theLong And b(bit)
End Function


'------------------------------------------------------------------
MsgBox LongBitIsSet(255, 7)             '<--displays: True
MsgBox LongBitIsSet(230, 0)             '<--displays: False
MsgBox LongBitIsSet(16384, 14)          '<--displays: True
MsgBox LongBitIsSet(-16383, 0)          '<--displays: True
MsgBox LongBitIsSet(&H7FFFFFFF, 0)      '<--displays: True

Tags:

Vb Example