- ベストアンサー
エクセルで「Enter」が押されたら処理を動かす
- エクセルでA1のセルの何か入力されたら、A2に「aaaaa」、A3に「bbbbb」と表示したいのです。B6のセルに何かが入力されたらB7に「aaaaa」とB8に「bbbbb」です。
- セルに何かが入力されてというのは「Enter」が押された時をイメージしていますが、実際には「12345」とキーを押し「→」でセル移動することもあると思いますし、マウスで移動することもあるので、「セルに何かが入ったら」という感じです。
- 勿論、そのセルが空白になれば、1行下、2行下も空白に戻したいです。 よろしくお願いします。教えてもらえば理解出来るのですが、エクセルでマクロ?を組むのは経験が浅く、何処に何を書けば良いのか、詳しく教えてもらえれば幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 対象のシートのシートタブを右クリックしてコードの表示で VBE画面(シートのイベントプロシージャ)を出して、下記コードをコピペ Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub Application.EnableEvents = False If Target.Value <> "" Then Target.Offset(1) = "aaaaa" Target.Offset(2) = "bbbbb" Else Target.Offset(1) = "" Target.Offset(2) = "" End If Application.EnableEvents = True End Sub で、試して下さい。
その他の回答 (2)
- Gletscher
- ベストアンサー率23% (1525/6504)
マクロを組んで解決したい訳では無いですよね? もっと簡単に計算式だけで処理してはいかがでしょうか? つまり、例えば、A1に何か入力された時と言うのは、言い換えれば「空白でなければ」とゆうことで良いですよね? ならば、イベントが起きた時に入力したいセル、例えば、 A2には、 =IF(ISBLANK(A1),"","aaaaa") A3には、 =IF(ISBLANK(A1),"","bbbbb") と式を書けば良いのではないでしょうか?
- imogasi
- ベストアンサー率27% (4737/17069)
この質問は、VBAでいう「イベント」という仕組みの問題でしょう。質問者はこのことを十分知らず質問しているのではないか。VBAのイベントを勉強のこと。#1の回答のように、ENTERキーを押すとは、セルの値が変化するということに置き換えてもよいことを言っているなら、Changeイベントでとらえれば、仕舞だが文字どおり「ENTER」キーを押したことをとらえるのはむつかしいと思う。エクセルその他のソフトで、データ入力などでENTERキーは、≫古くから他のソフトでも、特別な意味があり、改行の意味にも使われる。その区別がむつかしいのでAPI(VBAよりグ下位レベル)などの問題になる。 >入力されたセルの1行下に「aaaaa」、2行下に「bbbbb」という動きをするようにしたいのです。bbbbb」という動きとは何?bbbbbはどう決めるの? この意味不明。 CHANGEしたかどうかは、フォーカスが別セルに移ったというような意味であると菅家られる。 ーー データ入力+ENTER データ入力+TAB] データ入力+矢印キー データキー+他セルクリック その他もあるかもしれない。(シートのセル以外の他の部分を選択など) コピーしたものを貼り付け ーー これらは同類の効果を生み、そのセルでのデータが確定する。==>CHANGEしたとみなす。ただし、上書きして同じデータを入れた場合はChangeにならなかったと思う(訂正。反応した)。 テキストボックスなどでENTERのイベントがあるが1文字入れたつど反応したりして使いづらいものである。 Cacelや取り消しなどの場合どうなるかも勉強が必要。 複数セルが変化した場合などもむづかしい面がある。 生兵法怪我の元にならないように。 しかし、普通の場合は便利な仕組みである。 >セルの条件付き書式設定で「次のセルのみを書式設定」で「空白なし」の場合に塗りつぶしをしているのですが、そのタイミングで1行下と2行下に固定表示したいです。 この意味もよくわからない。 書式の変更はChangeイベントに反応しないと思う。 Changeは「セルの値」限定で、セルの他の属性(書式やコメントなど)には反応しないと思う。 シートのChangeイベント Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "AAA" End Sub を作ってどう反応するか(メッセージボックスが出たら反応したということ)をやってみたらよい。 色々経験を積んで考えることであろう。 == 質問は>1行下と2行下に固定表示したいです ン亜土の意味がよくわからない。変化したセルはTargetで、1行下はOffsetで簡単に指定できるのだが。