|
すでに回答で出てますが別案です。
ユーザーフォームを作成します。
名前は、UserForm1 とします。
ユーザーフォームのモジュールを下記のように記述します。
Option Explicit
Dim r As Range
Private Sub UserForm_Initialize()
Me.StartUpPosition = 0
Me.Left = 0 - Me.Width - 10
Set r = Cells(10, 10)
r.Interior.ColorIndex = 6
End Sub
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim r1 As Range
Set r1 = r
r1.Interior.ColorIndex = xlNone
Select Case KeyCode
Case vbKeyLeft
If r.Column > 1 Then Set r1 = r.Offset(, -1)
Case vbKeyUp
If r.Row > 1 Then Set r1 = r.Offset(-1)
Case vbKeyRight
If r.Column < 20 Then Set r1 = r.Offset(, 1)
Case vbKeyDown
If r.Row < 20 Then Set r1 = r.Offset(1)
Case vbKeyEscape
Unload Me
Exit Sub
End Select
r1.Interior.ColorIndex = 6
Set r = r1
End Sub
シート上に、ユーザーフォームのボタンを配置して、
下記のマクロを登録します。
Sub ボタン1_Click()
UserForm1.Show
End Sub
これで、ボタンをクリックすると、Cells(10, 10) が黄色になり、
矢印キーで黄色のセルが移動します。
ESCキーを押すと、終了します。
やっていることは、ユーザーフォームをウィンドウの外に移動させて見えないようにして、
キーボード入力はユーザーフォームで受け取るようにしてます。
|
|