プロが教えるわが家の防犯対策術!

ブック内の全シートを対象としたマクロで、たとえば (A1)セルに入力後Enterで(C1)セルにカーソルを移動させるにはどのように記述したらよいでしょうか。よろしくお願いします。

A 回答 (3件)

標準モジュールに



Sub Auto_Open()
Application.OnKey "{RETURN}", "ENTER_OnKey"
Application.OnKey "{ENTER}", "ENTER_OnKey" 'テンキーのEnterキー
End Sub

Sub ENTER_OnKey()
If ActiveCell.Address(0, 0) = "A1" Then
Range("C1").Select
End If
End Sub

を書いて、一度保存して再度立ち上げて見てください。

p.s.
Application.OnKey の部分は、Worksheet_ActivateやWorkbook_SheetActivateの部分で定義すれば、シート毎にも指定できます。
ENTER_OnKeyの部分は、標準モジュールで定義してください。

この回答への補足

ありがとうございます。
標準モジュール Module 1 に記入しました。
カーソルが "A1" から移動せず "A1" に居るままです。
ご教授願います。

補足日時:2007/11/30 08:37
    • good
    • 0

ANo.2です。


エラーが表示されずに
>カーソルが "A1" から移動せず "A1" に居るままです。
という事は、ENTER_OnKeyには言っていると思うので、

Sub ENTER_OnKey()
にデバッグポイントを設定してトレースしてみるか、次の行に
MsgBox ActiveCell.Address(0, 0)
を入れてみてください。

この回答への補足

ありがとうございます。
MsgBoxで表示させたら A1 と表示します。
ステップでマクロを実行すると。
if Activecell.address(0,0)="A1" Then から Range("c1").selectを飛び越してEnd ifに行きます。ご教示お願いします。

補足日時:2007/11/30 09:40
    • good
    • 0
この回答へのお礼

ありがとうございました。
私が Then の前の "A1" を 小文字で "a1" と記入していました。
カーソルは移動します。本当にありがとうございました。

お礼日時:2007/11/30 10:53

Excelのマクロでキーダウンイベントなどがありません


やるとするなら SelectionChangeイベントだろうと思います

シートモジュールに
dim oldCell as Range

private Sub Worksheet_SelectionChange(ByVal target as Range)
  ' 選択されたのが複数のセルなら何もしない
  if target.Cells.count > 1 then exit sub
  if oldCell is nothing then
    ' 以前に選択されたセルが無いとき
    set oldCell = Target
  else
    if oldCell.Address(0,0) = "A1" then
      ' 以前のセルがA1なら
      Range("C1").Select
      set oldCell = Nothing
    else
      ' 別のセルならそのセルを覚える
      set oldCell = Target
    end if
  end if
End Sub
といった具合でしょう ・・・

この回答への補足

ありがとうございます。
やはり全てのシートを対象には出来ないのでしょうか。

補足日時:2007/11/30 09:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!