• ベストアンサー

【エクセル】マクロでのセル移動についてお尋ねしたいのですが。

エクセルで、行数の異なる複数の列に大量のデータを入力しています。 「マクロ実行用のボタン」を1つ作って、そこをクリックする度に、 例えば、セルを「B2」→「C2」→「D2」→「B2」→繰り返し のように順番に選択するといった、マクロを作りたいのですが、詳しい方、アドバイスお願いします!

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#2の回答者です。 >B列を何行も入力した後、「ボタン」をクリックすれば、C列データの頭(C2)。 まあ、私としては、そのような初歩的なコードは、いくらマクロ初心者でも、ちょっと調べれば分かるはずだと思いますが。 '------------------------------------------- Private Sub CommandButton1_Click()   Select Case ActiveCell.Column     Case 2: Range("C2").Select     Case 3: Range("D2").Select     Case 4: Range("B2").Select     Case Else: Range("B2").Select   End Select End Sub ただ、どのセルにあっても、入力した最後の行のセルの境界線の上をダブルクリックすれば、最上行のところに戻りますから、そのようなショートカットでも十分だと思います。

その他の回答 (6)

回答No.7

オプションでエンターキーを押したら下に移動するように設定しておいて、B2からデータを入力し、横移動をTABキーで実施し、入力後エンターを押せばC2に移動します。 同様に入力してE列に来たときに、マクロボタンでB2を選択するようにしてみてはいかがですか? あとマクロ初心者なので不細工なマクロで申し訳ありませんが、 下記のマクロではどうでしょうか? 条件として ・B列やC列の入力完了するところが一致していないとうまく動きません。 ・D1のセルになにかを入れる必要があります。(フォントの色は白色でもかまいません) 動きの説明ですが、 ・現在の位置から10個左へセルを移動します(B列ならB1、C列ならC1に移動するように数字は変更してください。) (セル位置よりも大きい数字を入れるとマクロが走りません) ・移動先のセルの入力状態を確認します。 ・未記入であれば、下に一つ、右に一つ移動するので、C2やD2を選択します。 ・D1に何か入力があればB2に移動するようになっています。 Sub 仮() ActiveCell.Offset(0, -10).Select If ActiveCell.Value = "" Then ActiveCell.Offset(1, 1).Select Else Range("B2").Activate End If End Sub

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.6

Wendy02さんの回答で質問の内容には十分な回答だとおもいます。 操作性を考えるとボタンよりもショートカットのほうがいいように思います。 マクロは普通に作ってメニューからマクロの起動のオプションで目的のマクロにショートカットを作ります例えばCtrl+qで起動するということができます。 操作する人にとってみればキーボードから手を離さずに(マウスを使わずに) 操作できるので面倒がなくていいです。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

#1です >B列を何行も入力した後、「ボタン」をクリックすれば、C列データの頭(C2)。 >C列を何行も入力した後、同じ「ボタン」をクリックすれば、D列データの頭(セルD2)。 >D列を何行も入力した後、同じ「ボタン」をクリックすれば、元のB列のデータの頭(B2)に戻る。 >の繰り返しを考えているのです。 そのようになっていませんか? With ActiveCell   Cells(2, (.Column + 2) Mod 3 + 2).Select End With

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.3

例のような移動だったらマクロの必要はありませんね。 マクロでやろうということはA1、B5、C3 というような不規則な移動でしょうか もしくはB2に移動した後B3,B4などを修正して次にボタンを押すと C2に移動するというようなことでしょうか。 フォーカスを移動する命令は range("A1").Activate ’A1に移動する でできます。 どちらの場合もどこかに移動する先アドレスのリストを作っておいて マクロが起動されるたびにそこを参照して上記の命令を実行する方法があります いちいちマクロボタンを押さなくともEnterで任意の場所に移動する方法もありますがいかがでしょう。 たとえばB2でEnterを押すとC2、C2でEnterを押すとD2、D2でEnterを押すとB3 見たいなこともできます。

k-parking
質問者

補足

参考意見ありがとうございます。 ただ、マクロ初心者なので、理解不能です。。。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >例えば、セルを「B2」→「C2」→「D2」→「B2」→繰り返し たぶん、この文章からすると、次はB3ではないでしょうか? それから、入力の後は、クリックではなく、Enter と思います。 ボタンで、SetKey を呼び出してください。意味が違っていたら、ご指摘ください。 例: 'シートモジュール Private Sub CommandButton1_Click()  Call SetKey End Sub 二度目は、ブックを開けたときに、設定されます。終了時には、自動的に解除されます。 '標準モジュール '------------------------------------------- Sub SetKey()   'キーの設定  Application.OnKey "{Enter}", "CellOrders"  Application.OnKey "~", "CellOrders" End Sub Sub SetOffKey()  'キーの設定解除  Application.OnKey "{Enter}"  Application.OnKey "~" End Sub Sub CellOrders()   '「B2」→「C2」→「D2」→「B2」   '設定は、Shee1   If ActiveSheet.Name = "Sheet1" Then '←Sheet1     Select Case ActiveCell.Column       Case 2: Cells(ActiveCell.Row, 3).Select       Case 3: Cells(ActiveCell.Row, 4).Select       Case 4: Cells(ActiveCell.Row + 1, 2).Select '一行増える       Case Else: Cells(2, 2).Select '関係のないところでEnter すれば、B2に飛びます       'Case Else: Cells(ActiveCell.Row, 2).Select     End Select   Else     ActiveCell.Offset(1).Select   End If End Sub

k-parking
質問者

補足

分かりずらい質問ですいません。 B列を何行も入力した後、「ボタン」をクリックすれば、C列データの頭(C2)。 C列を何行も入力した後、同じ「ボタン」をクリックすれば、D列データの頭(セルD2)。 D列を何行も入力した後、同じ「ボタン」をクリックすれば、元のB列のデータの頭(B2)に戻る。 の繰り返しを考えているのです。 よろしくおねがいします!

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>そこをクリックする度に例えば、セルを「B2」→「C2」→「D2」→「B2」→繰り返し With ActiveCell   Cells(2, (.Column + 2) Mod 3 + 2).Select End With

k-parking
質問者

補足

分かりずらい質問ですいません。 B列を何行も入力した後、「ボタン」をクリックすれば、C列データの頭(C2)。 C列を何行も入力した後、同じ「ボタン」をクリックすれば、D列データの頭(セルD2)。 D列を何行も入力した後、同じ「ボタン」をクリックすれば、元のB列のデータの頭(B2)に戻る。 の繰り返しを考えているのです。 よろしくおねがいします!

関連するQ&A

  • セル移動マクロを教えて下さい。

    エクセルで最終行の次の行(新規入力となる行)の左4つ目のセルに移動するマクロを作りたいのですが、出来るでしょうか。 例えば列Aに1から3000までのNOが入っているとします。 B列からD列までは他のデータに使用しているため新規入力データE列の行から右に入力しています。 NO125の行までデータ入力している場合、ボタンをクリックすれば、A列のNO126(新規入力行のA列)にセルが移動するマクロです。 よろしく、お願いいたします。

  • エクセルのマクロのセルの選択について

    エクセルのマクロについて教えてください。 シート上にボタンを作ります。 そのボタンをクリックする前に適当にセルを範囲指定(アクティブ)に しておきます。 セルをアクティブにしたその状態で、ボタンをクリックすると、どこから どこまで範囲指定しているのかわかるようなマクロは作れるでしょうか? (1)たとえばB3からD10まで範囲指定しているときは、B3とD10のセルの場所  をひっぱってくるような... (2)あるいは  cell(?1,?2) ←B3とD10の ?1 と ?2 の値を求めるような... できれば(1)のようなB3とD10のセルの場所が直接わかるようなマクロが現在考えています処理にあっているので、そのほうがいいと思っているのですが.. お忙しいところ申し訳ありませんが宜しくお願い致します。

  • エクセルのマクロ

    B1をコピー⇒ブラウザの検索窓に貼り付け→エクセルに戻る B2をコピー⇒ブラウザの検索窓に貼り付け→エクセルに戻る B3を・・・という作業を自動化したいです。 B1~B?までを一括で選択してコピーという作業をマクロで自動化する方法はわかるのですが 上記の作業を簡単にする方法がわかりません。 B1→ブラウザ→B2を選択してマクロの表示ボタンをクリックして、右上にあるマクロの表示ボタンからポップアップウィンドウのマクロ画面の実行ボタンを押して~ というのをやっていたら、普通に「Ctrl+C」でコピーしたほうが早いと思います。 同じ操作を複数のセルに別々に実行したい場合、その別々を1個1個実行しているのは アホらしいです。 なにか方法はないでしょうか

  • エクセルのマクロでセル選択するには

    初心者です! エクセルのSheet1に30箇所のセルをマクロで選択したいのですが、 たまに選択するセルが変わります。 そこで、Sheet2のA1から下へSheet1の選択する位置を「B2」「C5」「D10」・・・としてマクロで一発で30箇所のセルを選択する方法を教えてください Sheet2のA1から下へ入力するセル位置はその都度変化します。 変化したときにそのマクロを実行すると選択できるといいのですが!! よろしくお願いします。

  • excelで セルの移動時にマクロ実行を設定したい。

    エクセルでボタンオブジェクトを作りクリックすると実行するようなマクロのを登録方法はわかるのですが、特定のセルB2に数値を入力してEnterKeyを押した際に実行するようにマクロを登録するにはどうするのでしょう。マクロの編集画面で 最初の行が Sub となっていますが、あそこに何かをいれたらいいのでしょうか?教えてください。よろしくお願いします。

  • エクセルでのマクロについての質問です

    毎日行数の違うデータの隣に数式を入力してフィルでコピーしていますが簡易のマクロを組んでみました。ですが行数が変わるためマクロ登録した時の行数までしか数式がコピーされません。 画面1のようにC1、D1セルの数式をフィルでコピーしたマクロを登録しました。画面2のようにデータが多くなるとC5、D5までしかコピーされません。最初はC1、D1だけに数式を入力してマクロ実行後、フィルでコピーしていましたが面倒な為、現在は行数を多く設定していますが無駄に数式が入るためにデーターが重くなります。マクロでB列の最下セルを検索しその列までC,Dセルをコピーというなマクロが出来るなら教えて頂きたいです。VBAの知識を必要とすると思いますがよろしくお願いします。

  • エクセルのマクロの作り方で、教えてください。

    エクセルのVBAを使って、選択肢を選んで答える簡単な学習ソフトを作っています。問題文を作るときは正解をいちばん左のセルに入れて、あとから3つの選択肢の順番をランダムに入れ替える簡単なマクロを作ろうとしましたがうまくいきません。たとえば、A列に問題番号、B列に問題文、C列~E列までに選択肢の1,2,3が入っています。問題は20問、つまり1から20行まで入っています。そしてコマンドボタンを押すと適当にC~Eの内容が入れ替わるようにしたいのです。私がやろうとしたのは選択肢1~3を文字列の変数にして、1行目から20行目まではループで実行させるのですが、肝心な入れ替えをどのようにしたらよいかわかりません。乱数を使ったらどうかと思ったのですが、使い方がわかりません。もっと簡単な方法があればそれも教えてください。VBAの初心者ですのでよろしくお願いします。

  • エクセルでのマクロ作成

    エクセルで作成したボタンをクリックすると以下の事を行うマクロを作りたいと思っています。 (1)最初に貼り付けたいセルの範囲をドラッグで選択する。(手動) (2)マクロを登録したボタンを押す。 (3)マクロ内で指定したセル(たとえば $A$1)をコピーして、(2)でボタンを押してマクロを実行する前に(1)で選択したセルの範囲に貼り付ける。 VBAが分からないので難儀しています。 宜しくお願いします。

  • エクセルのマクロでセルに色を付けたい

    エクセルでセルに色を付けるマクロを作る場合の 色の選択なのですが、特定の色を付けるのではなく、 そのマクロを実行した時に選択されている 「塗りつぶしの色」のボタンのバケツの色にするには どうしたら良いでしょうか? よろしくお願いいたします。

  • Excel VBA アクティブセルからある一定のセルまでの範囲選択

    Excel VBA アクティブセルからある一定のセルまでの範囲選択 Excel2003を使用しています。 アクティブセルからC列に『計』と入力されている行の1行上のD列までを選択状態にするマクロを作成しようとしています。 C列に『計』と入力されている行は下記のように複数あるので、アクティブセルの行以下に入力されている次のC列の『計』の1行上までとしたいのですが、どのようにコードを書いたらいいでしょうか? 例えば… A2セルをアクティブにしていてマクロを実行するとA2:D3が選択状態に A7セルをアクティブにしていてマクロを実行すると、A7:D9が選択状態になるように という具合です。 わかりづらくて申し訳ありませんが、よろしくお願いします。    A     B     C     D 1  日付    №   品名    金額 2  1/1     1    ○○○   1,000 3  1/2     2    ×××   1,500 4              計      2,500 5 6 7   1/1     5    ○×○   2,000 8   1/3     6    ××○   1,200 9   1/4     7    ×○○   2,500               計      5,700            :            :

専門家に質問してみよう