Answers for "Check if bits are SET in vba"

VBA
24

Check if bits are SET in vba

'Fast VBA function to test if specific bits are set 
'within a Byte. If ALL specified bits are set then this function
'returns True. If ANY of the specified bits are not set then
'this function returns False.

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

'Note: bits can be specified in any order.


Function ByteBitsAreSet(theByte As Byte, ParamArray bits()) As Boolean
    Static i&, b() As Byte
    If UBound(bits) = -1 Then Exit Function
    If (Not Not b) = 0 Then
        ReDim b(0 To 7)
        For i = 0 To 7
            b(i) = 2 ^ i
        Next
    End If
    For i = 0 To UBound(bits)
        If bits(i) < 0 Then Exit Function
        If bits(i) > 7 Then Exit Function
        If (theByte And b(Int(bits(i)))) = 0 Then Exit Function
    Next
    ByteBitsAreSet = True
End Function


'--------------------------------------------------------------------------
MsgBox ByteBitsAreSet(255, 7)           '<--displays: True   255 = 11111111
MsgBox ByteBitsAreSet(230, 0)           '<--displays: False  230 = 11100110
MsgBox ByteBitsAreSet(85, 0, 2, 6, 4)   '<--displays: True    85 = 01010101
MsgBox ByteBitsAreSet(85, 0, 2, 5, 4)   '<--displays: False   85 = 01010101
'
'
'
Posted by: Guest on February-06-2021
20

vba check if bit is set in long

'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.


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
Posted by: Guest on February-05-2021
22

excel vba check if bit is set in integer

'Extremely fast VBA function to test if a specified bit is set 
'within a 16-bit Integer.

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

'Note: we do not inspect bit 15, the sign bit.


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)      '<--displays: True
MsgBox IntegerBitIsSet(230, 0)      '<--displays: False
MsgBox IntegerBitIsSet(16384, 14)   '<--displays: True
MsgBox IntegerBitIsSet(-16383, 0)   '<--displays: True
Posted by: Guest on February-05-2021
15

vba check if bit is set in byte

'Extremely fast VBA function to test if a specified bit is set 
'within a Byte.

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

Function ByteBitIsSet(theByte As Byte, bit As Byte) As Boolean
    Static i&, b() As Byte
    If (Not Not b) = 0 Then
        ReDim b(0 To 7)
        For i = 0 To 7
            b(i) = 2 ^ i
        Next
    End If
    If bit < 8 Then ByteBitIsSet = theByte And b(bit)
End Function

'------------------------------------------------------------------
MsgBox ByteBitIsSet(255, 7)      '<--displays: True
MsgBox ByteBitIsSet(230, 0)      '<--displays: False
Posted by: Guest on February-05-2021

Code answers related to "Check if bits are SET in vba"

Code answers related to "VBA"

Browse Popular Code Answers by Language