キー状態判定【合作版】
キー状態判定につきまして、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一つしか経由していないので、速度はこちらが速めです。