エクセルでデータを別セルに反映する際に、エクセルの色データも一緒に反映させる
にはどのようにすれば反映できるでしょうか?
一回コピーしてペーストして値を反映させるのではなく、値を登録した瞬間、別セルにすぐ反映されるのが
理想なのですがそのようなことは可能でしょうか?
お手数をおかけしますがどうぞよろしくお願いいたします。
>値を登録した瞬間、別セルにすぐ反映される
ということで、ワークシート関数かユーザー定義関数になると思うけど、それだと書式が変更できません。
それで、worksheet_changeイベントで特定のセルの値が変化したら特定のセルの書式を変えてみます。
以下は、参考までにA列を変化させたら隣のB列の色を同じにするサンプルです。
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Dim str As String If Target.Column <> 1 Then Exit Sub Cells(Target.Row, 2).Value = Target.Value Cells(Target.Row, 2).Font.ColorIndex = Target.Font.ColorIndex Cells(Target.Row, 2).Interior.ColorIndex = Target.Interior.ColorIndex 'コピーしてしまうならば 'Target.Copy (Cells(Target.Row, 2)) Application.ScreenUpdating = True End Sub
セルに値を登録した瞬間として、例を挙げます
A1 のセルの値が1なら青、2なら赤にする場合、
まずメニューの「書式」→「条件付き書式」を選択。
コントロールしたいセル範囲、A1セルを選択して、
条件1に「数式が」「=$A$1=1」
これが真のときに青色になるように
→書式ボタンをクリック、パターンタブをクリックして青色を指定。
追加ボタンを押して
条件2に「数式が」「=$A$1=2」
これが真のときに赤色になるように
→書式ボタンをクリック、パターンタブをクリックして赤色を指定。
OKボタンを押す。
条件が複雑になるようならマクロを使う例もありますが、たいていはこれでいけますよ。
数式のほうがいろいろ指定できますよ。
数式を変えていろいろと試してください。
以下はダミーURLです。
ご回答ありがとうございます。
>値を登録した瞬間、別セルにすぐ反映される
ということで、ワークシート関数かユーザー定義関数になると思うけど、それだと書式が変更できません。
それで、worksheet_changeイベントで特定のセルの値が変化したら特定のセルの書式を変えてみます。
以下は、参考までにA列を変化させたら隣のB列の色を同じにするサンプルです。
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Dim str As String If Target.Column <> 1 Then Exit Sub Cells(Target.Row, 2).Value = Target.Value Cells(Target.Row, 2).Font.ColorIndex = Target.Font.ColorIndex Cells(Target.Row, 2).Interior.ColorIndex = Target.Interior.ColorIndex 'コピーしてしまうならば 'Target.Copy (Cells(Target.Row, 2)) Application.ScreenUpdating = True End Sub
ご回答ありがとうございます。
VBAでの処理になると思います。
A1の色をA3に反映させる例です。(値は、別途A3のセルに =A1 など指定ください)
A1の値が変化したときに、A1の色がA3に反映します。
Private Sub Worksheet_Calculate()
Dim src, tgt
src = "A1"
tgt = "A3"
Range(tgt).Interior.ColorIndex = Range(src).Interior.ColorIndex
Range(tgt).Font.ColorIndex = Range(src).Font.ColorIndex
End Sub
ただ、色を付けてから値を入力した場合はなんとかなりますが、値を入力してから色を付けた場合はこれでは正しく動きません。
この場合は、一定秒ごとに書式をコピーするという力業の方法になると思います。
下の7番の解答を参照ください。
ご回答ありがとうございます。
ご回答ありがとうございます。