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

下記マクロはカーソルの相対移動で教えいいただいたものです。
セルに値を入力しないで、Enterを押下した時もこのように動作させるためにはどのように記述したらいいでしょうか。教えてください。よろしくお願いいたします。

Private Sub Worksheet_Change(ByVal Target As Range)
if Target.Column = 2 Then Cells(Target.Row,5).Select
if Target.Column = 5 Then Cells(Target.Row,7).Select
if Target.Column = 7 Then Cells(Target.Row + 1, 2).Select
End Sub

A 回答 (2件)

無理矢理やるなら、Application.Onkeyを用いてできます。


Sheet1でのみ機能を有効に設定する例です。ご参考まで。

☆Sheet1モジュール
'他のシートからSheet1に移った時にしか有効にならないので、ブックオープン時に別のSheetをActiveにする様な仕込みが必要になります。
ご質問にあるWorksheet_Changeイベントのコードは削除しても良いと思います。
Private Sub Worksheet_Activate()
setJumpCell
End Sub

Private Sub Worksheet_Deactivate()
resetJumpCell
End Sub

☆標準モジュール
参考URLをご覧下さい。当方NotePCなので、RETURNについてのみ動作確認しています。

Sub setJumpCell()
Application.OnKey "{RETURN}", "jumpCell"
Application.OnKey "{ENTER}", "jumpCell"
End Sub

Sub jumpCell()
Dim myCell As Range
Set myCell = ActiveCell
'If文は、本当は無くてもOKだが念のため
If myCell.Parent.Name = "Sheet1" Then
Select Case myCell.Column
Case 2
Cells(myCell.Row, 5).Select
Case 5
Cells(myCell.Row, 7).Select
Case 7
Cells(myCell.Row + 1, 2).Select
'目的の列以外で、Returnを押したとき、一行下に移動する様にする
Case Else
myCell.Offset(1, 0).Select
End Select
End If
End Sub

Sub resetJumpCell()
Application.OnKey "{RETURN}"
Application.OnKey "{ENTER}"
End Sub

参考URL:http://ameblo.jp/blueskyame/entry-10278830817.html
    • good
    • 0
この回答へのお礼

本当にありがとうございました。Openイベントとif文削除で全てのシートで動作させることが出来ました。本当に助かりました。

お礼日時:2011/04/19 08:09

エクセルシートのイベントにEnterはありません。

ですから質問者が言っていることは出来ません。SelectionChangeイベントなどあるが、ぴったりではないでしょう。値を入れるときに困る。
ダブルクリックイベントなどもあるが、忘れないようにするのも大変。
ーー
どうもこんなことを聞くのは、質問者は、VBAも含めて、エクセルの初心者だと思うが、初心者がイベントを、弄ばないと出来ないことを考えるのはやめたほうが良いと思う。
エクセルはセル選択は、人間がやるように出来ているのが仕組みだ。
ーー
やるなら、別の面から、例えばフォームというものを作って、入力するデータ項目を、フォームのテキストボックス(複数)にでも集めてそこに入力する。もし、そのある項目を飛ばすときは、TABでも使って、飛ばす。そこから全項目入力終了時に、各セルに値をセットするなどを行う。
    • good
    • 0
この回答へのお礼

ありがとうございました、もっと勉強していきたいと思います。

お礼日時:2011/04/19 08:03

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