Excel VBA: как проверить, установлены ли определенные биты в Int32

Чтобы проверить, установлены ли определенные биты в переменной Int32с помощью VBA в Excel, вы можете использовать несколько методов. Вот несколько примеров:

Метод 1: использование побитового оператора И

Function AreBitsSet(ByVal value As Long, ByVal bits As Long) As Boolean
    AreBitsSet = (value And bits) = bits
End Function

Использование:

Sub Example()
    Dim num As Long
    num = 12 ' Example value

    If AreBitsSet(num, 8) Then
        MsgBox "Bit 3 is set."
    Else
        MsgBox "Bit 3 is not set."
    End If
End Sub

Метод 2. Использование операторов побитового сдвига и побитового И

Function AreBitsSet(ByVal value As Long, ByVal bits As Long) As Boolean
    AreBitsSet = ((value And (2 ^ bits)) >> bits) = 1
End Function

Использование:

Sub Example()
    Dim num As Long
    num = 12 ' Example value

    If AreBitsSet(num, 3) Then
        MsgBox "Bit 3 is set."
    Else
        MsgBox "Bit 3 is not set."
    End If
End Sub

Метод 3. Использование функции TestBit

Function TestBit(ByVal value As Long, ByVal bitIndex As Long) As Boolean
    TestBit = (value And (2 ^ bitIndex)) <> 0
End Function

Использование:

Sub Example()
    Dim num As Long
    num = 12 ' Example value

    If TestBit(num, 3) Then
        MsgBox "Bit 3 is set."
    Else
        MsgBox "Bit 3 is not set."
    End If
End Sub