- 締切済み
マクロで別のセルに同じ文字を反映させる方法
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- MSZ006
- ベストアンサー率38% (390/1011)
#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.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)
こんにちは! >ボタンひとつで・・・ とありますので、コマンドボタンを配置しているという前提です。 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)
普通にセルに計算式を入れておけばよいような気もしますが、敢えてマクロですると、こんな感じでどうでしょう。 コピーをしたいどこかのセル(コピー元のセルも含む)をアクティブにしておいてマクロを実行します。 -------------------- 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日以降も同じようにしたいのですが、本来の表 はどんどんデータが増えていきます。 全てのセルに予め数式をいれることは可能でしょうか。 なお、この表は、複数の人が使います。