vba is bit set long code example
Example 1: excel vba is bit set long
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)
MsgBox LongBitIsSet(230, 0)
MsgBox LongBitIsSet(16384, 14)
MsgBox LongBitIsSet(-16383, 0)
MsgBox LongBitIsSet(&H7FFFFFFF, 0)
Example 2: excel vba check if bit is set in integer
Function IntegerBitIsSet(theInteger%, bit As Byte) As Boolean
Static i&, b%()
If (Not Not b) = 0 Then
ReDim b(0 To 14)
For i = 0 To 14
b(i) = 2 ^ i
Next
End If
If bit < 15 Then IntegerBitIsSet = theInteger And b(bit)
End Function
MsgBox IntegerBitIsSet(255, 7)
MsgBox IntegerBitIsSet(230, 0)
MsgBox IntegerBitIsSet(16384, 14)
MsgBox IntegerBitIsSet(-16383, 0)
Example 3: vba bits to byte
Function BitsToByte(bits$) As Byte
Dim i&
Static b() As Byte
If LenB(bits) > 16 Then Exit Function
If LenB(bits) = 16 Then
b = bits
Else
b = String$(8 - Len(bits), "0") & bits
End If
For i = 0 To 14 Step 2
BitsToByte = 2 * BitsToByte Or (b(i) Xor 48)
Next
End Function
MsgBox BitsToByte("00001100")
MsgBox BitsToByte("10000001")