|    | 
     すでに回答で出てますが別案です。 
 
ユーザーフォームを作成します。 
名前は、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キーを押すと、終了します。 
 
 
やっていることは、ユーザーフォームをウィンドウの外に移動させて見えないようにして、 
キーボード入力はユーザーフォームで受け取るようにしてます。 
 
 | 
     
    
   |