• 締切済み

マクロで別のセルに同じ文字を反映させる方法

エクセル2010を使用しています。 表のように、日付と名前と住所を入力したら、すぐ下の2行のセルに同じ文字を反映させ、かつ青文字にしたいのですが、マクロ機能を使ってボタンひとつで、文字を反映しその文字を青色にすることはできますか。 たとえば、 A2、B2、C2を手入力し、マクロボタンを押したら、 A2は、A3、A4へ同じ文字を反映し青文字になる。 B2は、B3、B4へ同じ文字を反映し青文字になる。 C2は、C3、C4へ同じ文字を反映し青文字になる。 同様に、9/2以降もそのマクロボタンを押したら同じようにできるようにしたいです。

みんなの回答

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

#1です。補足を見ました。 計算式&書式設定では、あらかじめ入力されるであろうところまで設定しておかないとだめなので、どこまで入力されるかわからない、という状況ではちょっとふさわしくなかったですね。 入力されたらすぐに下の2行に青字でコピーする、ということはマクロでできます。こんな感じでどうでしょうか。 ----------------------- Private Sub Worksheet_Change(ByVal Target As Range) pos = Target.Row If pos Mod 3 <> 2 Then Exit Sub End If Range(Cells(pos + 1, 1), Cells(pos + 2, 3)).Font.ColorIndex = 5 Cells(pos + 1, 1) = Cells(pos, 1) Cells(pos + 2, 1) = Cells(pos, 1) Cells(pos + 1, 2) = Cells(pos, 2) Cells(pos + 2, 2) = Cells(pos, 2) Cells(pos + 1, 3) = Cells(pos, 3) Cells(pos + 2, 3) = Cells(pos, 3) End Sub

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

No.2です。 No.1さんの補足に >一番したいことは、A2、B2、C2 文字を入力したら、自動的に下の2行に反映し・・・ とありましたので、またまた顔を出しました。 画像の配置どおり、2・5・8・・・と3行おきにデータを入力するとします。 マクロを実行するようにしてみました。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim i As Long i = Target.Row If i Mod 3 = 2 And WorksheetFunction.CountA(Cells(i, "A").Resize(, 3)) = 3 Then With Cells(i + 1, "A").Resize(2) .Value = Cells(i, "A") .Offset(, 1) = Cells(i, "B") .Offset(, 2) = Cells(i, "C") .Resize(2, 3).Font.ColorIndex = 5 End With Cells(Rows.Count, "A").End(xlUp).Offset(1).Select End If End Sub 'この行まで 今回はコマンドボタンではなく、その行のA~C列がすべて入力済みになった時点でマクロが実行されます。 こんな感じではどうでしょうか?m(_ _)m

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

こんにちは! >ボタンひとつで・・・ とありますので、コマンドボタンを配置しているという前提です。 A~C列を入力後、その行を選択してコマンドボタンをクリックするとします。 ※ A列の表示形式は「日付」にしておいてください。 Private Sub CommandButton1_Click() Dim i As Long i = Selection.Row With Cells(i + 1, "A").Resize(2) .Value = Cells(i, "A") .Offset(, 1) = Cells(i, "B") .Offset(, 2) = Cells(i, "C") .Resize(2, 3).Font.ColorIndex = 5 End With End Sub こんな感じではどうでしょうか?m(_ _)m

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

普通にセルに計算式を入れておけばよいような気もしますが、敢えてマクロですると、こんな感じでどうでしょう。 コピーをしたいどこかのセル(コピー元のセルも含む)をアクティブにしておいてマクロを実行します。 -------------------- Sub test() rw = ActiveCell.Row pos = ((rw + 1) \ 3) * 3 - 1 Range(Cells(pos + 1, 1), Cells(pos + 2, 3)).Font.ColorIndex = 5 Cells(pos + 1, 1) = Cells(pos, 1) Cells(pos + 2, 1) = Cells(pos, 1) Cells(pos + 1, 2) = Cells(pos, 2) Cells(pos + 2, 2) = Cells(pos, 2) Cells(pos + 1, 3) = Cells(pos, 3) Cells(pos + 2, 3) = Cells(pos, 3) End Sub

kurara2013
質問者

補足

ご回答ありがとうございます!すごいです! マクロ編集部分に張り付けたら無事に実行されました。 関数に詳しくないのですが、一番したいことは、A2、B2、C2 文字を入力したら、自動的に下の2行に反映し青文字になってほしい です。 数式を教えて頂くことはできますか? なお、9月2日以降も同じようにしたいのですが、本来の表 はどんどんデータが増えていきます。 全てのセルに予め数式をいれることは可能でしょうか。 なお、この表は、複数の人が使います。

関連するQ&A