 |
@VBAマクロを作るための「開発」タブは、適当なタブを右クリックして、「リボンのユーザー設定」を実行すれば、追加できます
|
 |
A「開発」にチェックマークをつけて、「OK」をクリックします
|
 |
B「開発」タブから「Visual Basic」を実行すれば、Visual Basic Editorを起動できます
|
 |
Cマクロを実行するシートをダブルクリックして、そのコードウィンドウを開きます
その先頭で、GetKeyState 関数を、Windows APIから呼び出しておきます。
そして、次のようなマクロで、Shiftキーが現在押されているかどうかを確認します。
|
Sub CheckShiftKey()
Dim KeyState As Integer
|
Sub CheckShiftKey()
はこのマクロの開始を示すサブルーチンです。CheckShiftKey という名前は任意ですが、マクロが何を行うかを示すために意味のある名前をつけています。
Dim KeyState As Integer は、KeyState という名前の変数を宣言しています。KeyState は Shiftキーの状態
を格納するために使用されます。この変数は、小数点を持たない整数を格納するための Integer 型にします。 |
' Shiftキーの状態を取得
KeyState = GetKeyState(vbKeyShift) ' vbKeyShift は、Shiftキーの仮想キーコード
|
KeyState = GetKeyState(vbKeyShift)
で、GetKeyState 関数 を使って Shiftキーの状態を取得します。 vbKeyShift は Shiftキー
の仮想キーコード(16)で、GetKeyState に渡すことで、Shiftキーの状態を調べることができるようになります。
GetKeyState は 16ビットの整数を返します。この整数の最上位ビット(ビット15)が 1 の場合、Shiftキーが押されていると判定します。 |
' Shiftキーが押されているかどうかを確認
If KeyState And &H8000 Then
MsgBox "Shift キーが押されています。"
Else
MsgBox "Shift キーは押されていません。"
End If
End Sub
|
If KeyState And &H8000 Then
は、最上位ビット(ビット15)が1かどうかを確認しています。
&H8000 は16進数で 1000 0000 0000 0000 というビットパターンを表します。これを KeyState の値と 論理積(AND)
をとることで、Shiftキーが押されている場合にビット15が 1 になるかどうかを判定しています。
ビット15が 1 の場合、Shiftキーが押されていることを意味します。If 文の中の処理は、もし
Shiftキーが押されている場合で、押されていれば、MsgBox "Shift キーが押されています。" というメッセージボックスが表示されます。
Else 文の中の処理は、Shiftキーが押されていない場合には、MsgBox "Shift キーは押されていません。"
というメッセージボックスが表示されます。 |
 |
DCheckShiftKeyマクロは、「開発」タブの「マクロ」から実行できます
|
 |
EShiftキーを押さえながら「実行」した場合と、そのまま「実行」した場合で、メッセージの異なるダイアログボックスが表示されます
|
キー |
仮想キーコード |
Shiftキー |
vbKeyShift |
Ctrlキー |
vbKeyControl |
Altキー |
vbKeyMenu |
Caps Lock |
vbKeyCapital |
Num Lock |
vbKeyNumlock |
Scroll Lock |
vbKeyScroll |
Aキー |
vbKeyA |
Escキー |
vbKeyEscape |
Enterキー |
vbKeyReturn |
|
FGetKeyState は、左表のような 仮想キーコード(Virtual-Key Code) を指定することで、さまざまなキーの状態を取得できます
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
●A列のセルと同じ色で塗りつぶされているセルの個数を表示する、
ユーザー定義関数を作る動画です
|