dポイントプレゼントキャンペーン実施中!

エクセル2010を使用しています。
表のように、日付と名前と住所を入力したら、すぐ下の2行のセルに同じ文字を反映させ、かつ青文字にしたいのですが、マクロ機能を使ってボタンひとつで、文字を反映しその文字を青色にすることはできますか。

たとえば、
A2、B2、C2を手入力し、マクロボタンを押したら、
A2は、A3、A4へ同じ文字を反映し青文字になる。
B2は、B3、B4へ同じ文字を反映し青文字になる。
C2は、C3、C4へ同じ文字を反映し青文字になる。

同様に、9/2以降もそのマクロボタンを押したら同じようにできるようにしたいです。

「マクロで別のセルに同じ文字を反映させる方」の質問画像

A 回答 (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
    • good
    • 0

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
    • good
    • 0

こんにちは!



>ボタンひとつで・・・
とありますので、コマンドボタンを配置しているという前提です。
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
    • good
    • 0

普通にセルに計算式を入れておけばよいような気もしますが、敢えてマクロですると、こんな感じでどうでしょう。


コピーをしたいどこかのセル(コピー元のセルも含む)をアクティブにしておいてマクロを実行します。

--------------------

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

この回答への補足

ご回答ありがとうございます!すごいです!
マクロ編集部分に張り付けたら無事に実行されました。

関数に詳しくないのですが、一番したいことは、A2、B2、C2
文字を入力したら、自動的に下の2行に反映し青文字になってほしい
です。

数式を教えて頂くことはできますか?

なお、9月2日以降も同じようにしたいのですが、本来の表
はどんどんデータが増えていきます。

全てのセルに予め数式をいれることは可能でしょうか。

なお、この表は、複数の人が使います。

補足日時:2013/08/30 18:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!