まりふのひと

ビットの位置が0か1かを調べる

0ならばFalse, 1ならばTrueを返すモジュール。
当面、5ビットまではテストしたが、それ以上は未テスト。引数1を variant にする必要があるかも‥‥

Const MYObjName As String = "modIs_Bits"

Public Function is_Bits(argCode As Long, argIchi As Long) As Boolean
On Error GoTo Err_is_Bits
Dim mbTitle As String
Dim andValue As Long

    mbTitle = MYObjName & "/is_Bits"
    If ((argIchi < 1) And (argIchi > 32)) Then
        is_Bits = False: Exit Function
    End If
    
    andValue = 2 ^ (argIchi - 1)
    is_Bits = (argCode And andValue) > 0
    
Exit_is_Bits:
    Exit Function
    
Err_is_Bits:
    MsgBox Err.Number & "/" & Err.Description, vbCritical, mbTitle
    Resume Exit_is_Bits
End Function