excel vba test if specific bits set in byte
'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
'
'
'