• ベストアンサー

エクセル VBA アクティブセルから移動する

アクティブセルへ入力し、エンターを押すと右隣のセルへ移動するように Module 1へ Sub セル() ActiveCell.Offset(0, 1).Select End Sub と、入れましたが、エンターを押すと、下のセルへ移動してしまいます。 どこを直せばいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! お示しのコードは標準モジュールにコードを記載していますので、 ご自身でマクロを実行しなければなりません。 単に右へ移動させるだけであれば Excel2007以降の場合 画面左上のOfficeボタン(Excel2010以降は「ファイル」)→ Excelのオプション(オプション)→  詳細設定 → 「編集設定」の「Enterキーを押した後にセルを移動する」の右▼で「下」となっているところを「右」にしてOK ※ 一定範囲内でそのような操作をしたい!というコトは多々ありますので、 仮にA1~D10セルの範囲内で右へ移動し、最終列(D列)の場合は1行下の最初の列に移動!したい場合は 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペースト → Excel画面に戻りA1~D10セルに何らかのデータを入力 → Enter としてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から '▼A1~D10セル以外の場合はなにもしない If Intersect(Target, Range("A1:D10")) Is Nothing Or Target.Count > 1 Then Exit Sub '▼D列の場合、1行下の左三列目のセルを選択 If Target.Column = 4 Then Target.Offset(1, -3).Select Else '▼右隣りのセルを選択 Target.Offset(0, 1).Select End If End Sub 'この行まで ※ Changeイベントにしていますので、 何らかのデータ入力(消去)などのセル変化が必要です。m(_ _)m

yukiti2
質問者

お礼

とても詳しく説明してくださりありがとうございました。

その他の回答 (2)

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.2

ENTERキーの変わりにTABキーで右隣に移動しますけど ENTERキーを押した時の移動方向の設定もできます。 http://support.microsoft.com/kb/968151/ja コードは以下の通りで シート名のタグ上で右クリックで『コードの表示』を選択し、 以下のコードを貼り付け Private Sub Worksheet_Change(ByVal Target As Range) ActiveCell.Offset(-1, 1).Select End Sub 上記コードは、1シートのみ有効です。 複数のシートで同様のことをしたい場合は、 それぞれのシートにコードを貼り付ける必要があります。

yukiti2
質問者

お礼

ありがとうございました。 初心者の私には一番わかりやすいコードと思い、 こちらのコードで試してみました。 思っていた通りのことができました。 また、よろしくお願いします。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

シートの名前の上で右クリック→コードの表示わ選択で 出てきたシートモジュールに Private Sub Worksheet_Change(ByVal Target As Range) Cells(Target.Row, Target.Column).Offset(0, 1).Select End Sub とすればいいと思います。

yukiti2
質問者

お礼

ありがとうございました。 解決することができました。 またよろしくお願いします。

関連するQ&A

  • EXCELでENTERキーでセルの移動マクロ

    こんにちは。 EXCELでENTERキーでセルの移動マクロを使いたいのですが、下記のマクロで改良を教えてもらいたいと思います。 まず、最初は必ず、セルB5にフォーカスしたいということ。そうして、できればOFFSETを使わないで、rangeかcellを使いたいのですが、お願いします。 Sub セル移動() Range("B5").Select Select Case ActiveCell.Column Case 1 ActiveCell.Offset(1, 1).Activate Case 2 ActiveCell.Offset(2, 2).Activate Case 3 ActiveCell.Offset(1, 1).Activate Case 4 ActiveCell.Offset(1, 1).Activate End Select End Sub

  • VBA アクティブセルに対しての作業に関して

    -質問内容-VBA作成2つ- ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0).Activate アクティブセルを指定した段階で オフセット(縦下方向にO1991のセルに入れた数値分下に、ヨコに0) 移動しアクティブセルにする ------------------------------------------------------ ------------------------------------------------------ 別々のVBAでやりたいこと (1)これを、アクティブセルを指定した段階で セルの値をコピーして オフセット縦下にO1991.ヨコ0分下にペースト(貼り付け) したい 例)     A    1 成功  ←アクティブセルをコピー   3 成功  ← ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0).Activate  アクティブセル~オフセットしたセルまでを最初にアクティブセルからコピーし →アクティブセル~オフセットしたセルまでペーストする ----------------------------------------- (2)これを、アクティブセルを指定した段階で セルの値をコピーして オフセット縦下にO1991.ヨコ0分下に アクティブセル~オフセットされたセル位置まで フィルダウンさせたい 例)     A    1 1 ←アクティブセルをコピー   5  ←オフセットセル 2つのVBAのやり方/プログラムの表記/組み合わせ方を 無知で愚かな私ですが どうかご教授のほど 宜しくお願い致します (>_<)謝↓ペコッ --------------------------------------- --------------------------------------- 変数を使うのでしょうか? セル範囲を指定するとして Range("ActiveCell:ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0).Active") となるのでしょうか? 又変数の使い方として Dim a As Range 又は Dim a As Objectになるのでしょうか この際代入として使うには a = ActiveCell b = ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0).Activate になるのでしょうか 本当に度々申し訳ないのですが 宜しくお願いします (:>_<:)ペコリ Range(ActiveCell).copy ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0)ActiveCell.PasteSpecial End Sub

  • VBA アクティブセルに対しての作業に関して

    -質問内容-VBA作成2つ- ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0).Activate アクティブセルを指定した段階で オフセット(縦下方向にO1991のセルに入れた数値分下に、ヨコに0) 移動しアクティブセルにする ------------------------------------------------------ ------------------------------------------------------ 別々のVBAでやりたいこと (1)これを、アクティブセルを指定した段階で セルの値をコピーして オフセット縦下にO1991.ヨコ0分下にペースト(貼り付け) したい 例)     A    1 成功  ←アクティブセルをコピー   3 成功  ← ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0).Activate  アクティブセル~オフセットしたセルまでを最初にアクティブセルからコピーし →アクティブセル~オフセットしたセルまでペーストする ----------------------------------------- (2)これを、アクティブセルを指定した段階で セルの値をコピーして オフセット縦下にO1991.ヨコ0分下に アクティブセル~オフセットされたセル位置まで フィルダウンさせたい 例)     A    1 1 ←アクティブセルをコピー   5  ←オフセットセル 2つのVBAのやり方/プログラムの表記/組み合わせ方を 無知で愚かな私ですが どうかご教授のほど 宜しくお願い致します (>_<)謝↓ペコッ --------------------------------------- --------------------------------------- 変数を使うのでしょうか? セル範囲を指定するとして Range("ActiveCell:ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0).Active") となるのでしょうか? 又変数の使い方として Dim a As Range 又は Dim a As Objectになるのでしょうか この際代入として使うには a = ActiveCell b = ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0).Activate になるのでしょうか 本当に度々申し訳ないのですが 宜しくお願いします (:>_<:)ペコリ Range(ActiveCell).copy ActiveCell.Offset(RowOffset:=[O1991], Columnoffset:=0)ActiveCell.PasteSpecial End Sub

  • エクセルで行を非表示にするとアクティブなセルが・・・

    エクセルで行を非表示にするとアクティブなセル?行?がどこかわからなくなり、マクロでアクティブなセルを移動するときにエラーが出ます。 Sub example() ActiveSheet.Range("D3").Select Do Until ActiveCell = 23 If ActiveCell <> "" Then ActiveCell.Offset(1, 0).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -3).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -6).Select Else: ActiveCell.EntireRow.Select Selection.EntireRow.Hidden = True ActiveCell.Offset(0, -6).Select End If Loop End Sub 一番下のActiveCell.Offset(0, -6).Select にエラーが出るのですが、どうすればセルを移動できるでしょうか?

  • ExelVBAでのアクティブセルの記述

    Excelマクロ初心者です。 今会社で出勤表のマクロを組んでいるのですが、 「アクティブセルが○列にあった場合、アクティブセルを2行下、30列左に移動させ、それ以外だと右に一つ移動」 という構文は、 「If アクティブセルが○列にある Then ActiveCell.Offset(2, -30).Select Else ActiveCell.Offset(0, 1).Select End If」 となると思うのですが、その肝心な「アクティブセルが○列にある」の記述の仕方が分かりません。 どうかご教授ください。

  • エクセル マクロ VBA について

    以下はセルB2.C2.D2.E2.F2をアクティブセルから右方向へ入力しています。ここでの入力とは"=" + "セルB2" というものです。一つずつ入力している為マクロが長くなります。短くシンプルなものにしたいです。ご教示お願いします。 ActiveCell.FormulaR1C1 = "=R2C2" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=R2C3" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=R2C4" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=R2C5" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=R2C6"

  • Excel VBA ENTERで特定のセルへ移動

    他の質問でみつけたコードですが どなたか以下のコードの内容を説明(翻訳)していただけないでしょうか よろしくお願いします。 '<標準モジュール> Private Sub ReturnDirectrion2SelectCell()  If ActiveCell.Address(0, 0) Like "A2" Then   Range("B5").Select  Else   'Original ReturnDirection の再現   On Error Resume Next   Select Case Application.MoveAfterReturnDirection   Case xlDown     ActiveCell.Offset(1).Select   Case xlToRight     ActiveCell.Offset(, 1).Select   Case xlToLeft     ActiveCell.Offset(, -1).Select   Case xlUp     ActiveCell.Offset(-1).Select   End Select  End If End Sub Sub SetKeys()   '設定用   Application.OnKey "~", "ReturnDirectrion2SelectCell"   Application.OnKey "{Enter}", "ReturnDirectrion2SelectCell" End Sub Sub SetOffKeys()  '解除用  Application.OnKey "~"  Application.OnKey "{Enter}" End Sub '----------------------------------------- 自動設定が必要な場合は、以下のコードを加えてください。 '----------------------------------------- '<標準モジュール> Sub Auto_Open()  Call SetKeys End If Sub Auto_Close()  Call SetOffKeys End If '----------------------------------------- 以上です。よろしくお願いします。

  • アクティブセルに制限をつけるには・・・

    ユーザーフォーム上のテキストボックスの値をアクティブセルに転記しているのですが、D列のみのアクティブセルにするにはどうしたらいいでしょうか?ご教授お願い致します。構文は以下の通りです。 Private Sub CommandButton1_Click() ActiveCell.Value = TextBox1.Text ActiveCell.Offset(, 1) = TextBox2.Text ActiveCell.Offset(, 2) = TextBox3.Text End Sub

  • VBAについて

    いつもお世話になっています マクロ・VBA超初心者です。 質問させてください。 現在シート1の完売のセルの欄に○が入っていれば日付をみてシート2の同じ日付の隣のセルに○を入力しようと思っているのですが、シート2の日付を検索はしているんですが入力がいきません Sheet1  ↓セルA1 ↓セルB1  5月26日   26           B1のセルはDAY(A1)にて出してます         完売  A氏     ○             Sheet2  ↓A列   ↓B列 5月  1日  ・  ・  ・  26日    ○           ←シート1の所に○が付いているとシート1セルB1と同じ  27日                  日付の隣のセルに○を入力  28日 VBA Sub test() Sheets("Sheet2").Select Range("A1").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Activate If ActiveCell.Value = Worksheets("Sheet1").Range("B2") Then ActiveCell.Offset(0, 1).Activate If ActiveCell.Value <> "○" Then ActiveCell.Valu = "○" ActiveCell.Offset(0, -1).Activate Else ActiveCell.Offset(0, -1).Activate End If Else End If Loop Sheets("Sheet2").Select Range("A1").Select End Sub どこが間違っているかわからない状態です。 分かりにくい説明ではあるんですが教えてください お願いします。

  • IEの中のエクセルから、通常のエクセルへコピーしたい。

    IEの中のエクセルから、通常のエクセルへコピーしたい。 ネット上のアクティブセルから、自分のパソコンのエクセルへセルの内容を コピーしたいのですが、うまくアクティブになりません。 よろしくお願いします。 Sub TENKI() 部材記号 = ActiveCell.Value 部材名 = ActiveCell.Offset(0, 2).Value ActiveCell.Offset(1).Select イエス = MsgBox(部材記号 & " 部材名も必要ですか?", vbYesNo) If イエス = 6 Then ActiveCell = 部材記号 ActiveCell.Offset(0, 2).Value = 部材名 ActiveCell.Offset(1).Select ElseIf イエス = 7 Then ActiveCell = 部材記号 ActiveCell.Offset(1).Select End If End Sub Private Sub Workbook_Open() With Application.CommandBars("Cell").Controls.Add(Temporary:=True) .Caption = "転記" .OnAction = "TENKI" .BeginGroup = True End With End Sub

専門家に質問してみよう