6

キー状態判定につきまして、S.Nさん、Koizumi866さん、anothersolutionさん
との情報交換により、スクリプトを作りましたのでシェアしたいと思います。
情報交換による共同合作版となります。

----------------------------------------------------------------------------------------------

【Excel VBA → Win32API 経由】

キーの押下状況を確認することができます。スクロールロック、Numlock、Capslock等の
押下状況を判定し、押されていればTrue、押されていなければFalseを判定結果に返します。

設定値にはKeyコードを設定し、スクロールロックなら145、Numlockなら144と指定してください。
keyコードはwebで検索することができます。

----------------------------------------------------------------------------------------------

Dim xlsApp
Dim mykey
Dim check

mykey=int(!keyコード!)
Set xlsApp = CreateObject("Excel.Application")

If xlsApp.ExecuteExcel4Macro("Call(""user32"",""GetKeyState"",""II""," & mykey & ")") then
check="True"

Else
check="False"

End if

Set xlsApp = Nothing
SetUMSVariable $判定結果$,check

----------------------------------------------------------------------------------------------

【Word VBA 経由】

Dim wordApp
Dim check

Set wordApp = CreateObject("Word.Application")
check=wordApp.Numlock
Set wordApp = Nothing
SetUMSVariable $判定結果$,check

----------------------------------------------------------------------------------------------

こちらは、WordVBA経由のスクリプト。
WordVBAに備わっている、Numlockプロパティ、Capslockプロパティを利用します。
スクリプト中、「Numlock」のところ「Capslock」など入れ替えて使用してください。
判定結果には、True、Falseを返します。
判定できる種類はおそらく少ないだろうと思います(ほかにどのキーのプロパティがあるか
確認とれず。スクロールロックはない)。
Word一つしか経由していないので、速度はこちらが速めです。

編集済みのコメント

回答とコメントは、会員登録(無料)で閲覧できるようになります。
会員登録(無料)する