• ベストアンサー

VBAについて

Excel97です、例えば セル A1 に入力し enterキーを押したら A5 がアクティブセルに B1 に入力しenterキーを押したら C5 がアクティブセルになるように するマクロの記述を教えてください。

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

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

以下のソースを使えば、上記のとおりになります。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then Range("A5").Select End If If Target.Row = 1 And Target.Column = 2 Then Range("C5").Select End If End Sub

hoshi7777
質問者

補足

有り難うございます、例えば A1 から A5 に行くようにする(1つだけ)のにも If 文を使うのでしょうか、(下記のように) 1つだけの場合は If 文を使わずに記述出来るでしょうか、よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then Range("A5").Select End If End sub

その他の回答 (5)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.6

どうして IF文を使うのか? という問いに対してですが、 Worksheet_Changeのイベントは、どのセルが変更されてもくるからです。 つまり、A1の時 A5、B1の時 C5というふうに法則性がないから その A1の時と B1の時だけ 処理するように記述したのです。 法則性が あるならば、その法則にしたがって 飛ばせばいいだけなので IF文は いらなくなる可能性があります。

hoshi7777
質問者

お礼

本当に有り難うございました、

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

既出回答と同じイベントを使っていますが、次ぎに飛ばしたいセルの数が増えた時のことを考えてテーブル方式に しました。Arrayの()内を、チェンジするセル-飛び先セルの対で2項目づつ増やしてください。テスト済み。 但しChangeイベントはクセがあったと思いますので、 100%満足は得られないかもしれない。 Private Sub Worksheet_Change(ByVal Target As Range) ' MsgBox Target.Address ct = Array("$A$1", "$A$5", "$B$1", "$C$5", "$B$7", "$C$7") For i = 0 To 5 Step 2 If Target.Address = ct(i) Then Range(ct(i + 1)).Select End If Next i End Sub

hoshi7777
質問者

お礼

本当に有り難うございました。

回答No.4

ツール→オプション→編集で、 入力後にセルを移動する、で「下」にした場合と仮定して。 エクセルの画面で、 ツール→マクロ→Visual Basic Editorを選択します。 VBAの画面で、 表示→プロジェクトエクスプローラを選択 表示→コードを選択 右窓のコード窓に以下のソースを貼り付けます。 *--------- この下から Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$2" Then Range("A5").Select If Target.Address = "$B$2" Then Range("C5").Select End Sub *---------- この上まで エクセルに戻って、 A1でエンターを押せばA5へ、 B1でエンターを押せばC5へ飛びます。 ここで問題は矢印キーでA2、B2に持って行ってもそれぞれに飛んで行きます。 また、 Worksheet_Changeのイベントはセルの内容が変わらないと発生しないので、 Worksheet_SelectionChangeイベントを使いました。

hoshi7777
質問者

お礼

そのように処理する事も出来るのですね、本当に有り難うございました。

noname#4564
noname#4564
回答No.3

> セル A1 に入力し enterキーを押したら A5 がアクティブセルに 「入力し」というのを読み落としていました(汗) No.1のコメントと同趣旨ですが、下記でOKです。 Private Sub Worksheet_Change(ByVal Target As Range)   Select Case Target.Row     Case 1 '1行目       Select Case Target.Column         Case 1 'A列           Cells(5, 1).Select         Case 2 'B列           Cells(5, 3).Select       End Select   End Select End Sub

hoshi7777
質問者

お礼

本当に有り難うございました。

noname#4564
noname#4564
回答No.2

> セル A1 に入力し enterキーを押したら A5 がアクティブセルに B1 > に入力しenterキーを押したら C5 がアクティブセルになるように > するマクロの記述を教えてください。 Excel 2000 でしか確認していませんが、↓こんな感じで、一応それらしい動きになります。 (ワークシートのクラスモジュールに記述します) Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Select Case Target.Row     Case 2 '2行目       Select Case Target.Column         Case 1 'A列           Cells(5, 1).Select         Case 2 'B列           Cells(5, 3).Select       End Select   End Select End Sub ただし、上記のコードは<Enter>キーのイベントで動作する訳ではないので、このままでは、 A2、B2を選択しただけでアクティブセルが移動してしまいます。 何らかの工夫が必要です。 ※ Select Case文のネストが見にくいようでしたら、If文に書き換えてください。(汗)  

関連するQ&A

  • 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            :            :

  • Excelで入力直後に編集状態を解除したい

    ややこしい質問です。 エクセルでセルに入力した後、Enterキーを押さなくても、何かキーを押すだけで其処がアクティブセルになる方法をご存知の方、いらしたら教えて下さい 例えば、A1セルに「あああ」、と打ち込んだとします。 今は一度Enterキーを押して他のセルに移動してからもう一度A1をアクティブにして書式設定を行っています。 それを、「あああ」と打ち込んで、何かキーを押せば他のセルに移動しなくてもそのまま編集出来るようには出来ないでしょうか。

  • 値を入力後、自動的にアクティブセルが移動するマクロ

    (1)エクセルファイルを開けたときのアクティブセルを設定。 (2)そのセルに値を入力後、ENTERで違うセルに移動。  (違うセルは、隣接していない) (3)入力後、ENTERでまた違うセルに移動。 (4)数個のセルに入力後は、任意のセルに値を入力できるようにする。 マクロでできることなのかわかりませんが、 よろしくお願いします。

  • マクロでActivecellの1行下に移動したい

    EXCELのマクロで、あるセルにデータを入力した後、マクロボタンで1行下のセルをアクティブセルにしたいのですが、どう記述したらいいでしょうか?

  • マクロで複数のセルに数値を入力したい

    エクセル、マクロとも初心者なのですが、タイトル通りのことをするにはどうしたらよいか教えてください。 やりたいことは、 「指定したアクティブセル(毎回変わる)を選択し、その隣のセルにあらかじめ決められた数値をマクロで入力する」というものです。 例えば・・・ A1をアクティブにし、マクロを実行する B1、C1、D1、E1のセルに決められた数値が入力される こんな感じです。 基本的なことかもしれませんが、どうかよろしくお願いします。

  • エクセルVBAの記述について教えて下さい。

    エクセルVBAの記述について教えて下さい。 セルA1,B1,C1,D1,E1すべてにデータが入力されているかどうかを調べる記述を教えて下さい。 ちなみに・・・ 入力が不足しているときはmsgで『入力が不足しています』のダイアログ。 すべて入力されているときはmsgで『入力OK』のあとにCallで別のマクロを呼び込む ような記述が知りたいです。 どなたかご教授お願い致します。 【環境】 OS:Windows7 Excel:2003

  • Enterキーでマクロを起動さす。

    Excelの(例)A1のセルに検索値を入力しEnterキーを押すと事前に組まれたマクロが起動する方法を教えて下さい。 又はEnterキーにマクロは設定できませんか?

  • エクセルのマクロ 条件分岐?

    VBA初心者です。よろしくお願いします。 相対参照で2つあるマクロ(マクロ名:コーヒーとマクロ名:紅茶)のうち条件をつけて片方を実行するようにしたいのですが、どのように記述したらできるでしょうか。 条件はアクティブセルがセルC1にある状態でセルA1に123と入力されているときに、コーヒーを実行してabcと入力されているときに紅茶を実行し、その返しをB1に入力します。

  • Excel VBA Auto_Openについて質問です。

    Excel VBA Auto_Openについて質問です。 A.xls Sub Auto_Open() Application.OnKey "{RETURN}", "ENTER_Key" Application.OnKey "{ENTER}", "ENTER_Key" End Sub でENTERキーでセルを任意の場所に動かしたいと考えています。 ENTER_Key()でうまく動かす事は出来たのですが、Auto_Openが止まらず、Excelを落とさずに、違うファイル(B.xls)を開いてA.xlsをクローズしてもB.xlsでENTERを押すと、エラー1004となってしまいます。 個人的にはAuto_Openが動いてしまっている感じがします。 エラーがでるので同コードをWorkbook_open()に移したのですが、今度は「マクロが使用できないか、無効になっている・・・」の画面になります。 原因や対策、またはENTERキーでセルを任意の場所に動かす方法等のアドバイスよろしくお願いします。 ちなみに、セル動きは1回目は1行下がり、2回目は右に4つ移動です。 このルーチンは出来ていると思います。 それではよろしくお願いいたします。 m(_ _)m

  • Excel でカレンダーを作りたい(マクロなどで)

    マクロなどを使って,Excel でカレンダーを作りたいと思ったのですが,難しくて挫折しています。具体的には以下のようなことを行ないたいと考えています。 特定のセルに例えば「09/04」と入力して Enter キーを押すとすると, (1)A1セルに「1」A2セルに「2」…A30セルに「30」と入力される。 (2)B1セルに「水」B2セルに「木」…B30セルに「木」と入力される。 (3)日曜日の日付と曜日のそれぞれのセルだけ太字になる。 情報をいただければ幸いです。

専門家に質問してみよう