GetAsyncKeyStateの戻り値に関する説明

`GetAsyncKeyState`関数の戻り値は、C言語のshort型、つまり2バイト（16ビット）のサイズになります。short型は、-32768から32767の値が使える範囲です。VBAでは、同じ2バイトのInteger型が使われています。16ビットということは、2の16乗の範囲でデータを持つことができます³。

`GetAsyncKeyState`関数の戻り値は、Integer型を2進数として扱った場合、一番左（最上位）の値が1であればキーが押されている、0であれば押されていない、と判定し、一番右（最下位）の値が1であれば前回`GetAsyncKeyState`関数を呼び出したあとにキーが押されている、0であれば押されていない、と判定します³。

定数-32768は、2進数に直すと `1000 0000 0000 0000` です。最上位ビットが1なら、現在そのキーが押されていることを示します⁴。このように2進数の各ビット値の1と0でなんらかの状況のONとOFFを表現するものがWin32APIではよくあります³。

(1) どのキーが押されたのかをVBAで判定する（GetAsyncKeyState）. https://vbabeginner.net/getasynckeystate/.
(2) VBA Win32API GetAsyncKeyStateを使ってマクロ実行時に .... https://thom.hateblo.jp/entry/2019/03/10/125326.
(3) VBA Win32API GetAsyncKeyStateを使ってマクロ実行時に .... https://bing.com/search?q=Excel+VBA+GetAsyncKeyState+%e5%ae%9a%e6%95%b0+-32768.
(4) VBAで押されたキーボードを判定する方法【GetAsyncKeyState .... https://liclog.net/getasynckeystate-function-vba-macro-catia-v5/.