- ベストアンサー
選択されたセルが赤くなる方法を教えてください。
エクセルで、のセルをシングルクリックした場合など、セルの周りが四角く囲まれた状態になりますが、その状態のセルに色をつけたいのですが、可能でしょうか。(クリックしたときだけでなく、十字キーで選択セルをずらした際に赤色のセルが移り変わるようにしたいです。) どなたか宜しくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
すみません、確認漏れをしていました。 セルのみの場合は以下の数式を =OR(CELL("row")=ROW(), CELL("col")=COLUMN()) 以下のように変更してください。 =AND(CELL("row")=ROW(), CELL("col")=COLUMN()) OR → AND への変更となります。
その他の回答 (6)
- takibo
- ベストアンサー率57% (116/200)
こちらの質問のNo.1の回答で、ご希望の結果が得られるはずです。 http://okwave.jp/qa2089225.html 条件付き書式を使っているのでもともと塗りつぶした色は保持されます。 ただ、その後の回答にもあるように、ファイルの内容によっては条件付き書式はそれなりの負荷がかかります。 あまり重くなるとクリックと色が変わるタイミングのずれが大きくなってしまうので気をつけてください。
- merlionXX
- ベストアンサー率48% (1930/4007)
マクロが走ると画面がちらつくのが気になりますね。 ちょっと変えてみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Rng As Range, SRng As Range Set Rng = Range("C3:K20") If Not Intersect(Target, Rng) Is Nothing Then Set SRng = Selection With Application .ScreenUpdating = False Sheets("damy").Range("C3:K20").Copy .EnableEvents = False Rng.PasteSpecial Paste:=xlPasteFormats SRng.Select SRng.Interior.ColorIndex = 3 .EnableEvents = True .ScreenUpdating = True End With End If Set Rng = Nothing Set SRng = Nothing End Sub
- merlionXX
- ベストアンサー率48% (1930/4007)
> やはりマクロを有効とする範囲にその他の色の塗りつぶしを行うのは不可能なのでしょうか。 不可能ではありませんが一筋縄では行きませんね。 では、こうしましょうか。 新たにdamyという名前のシートを挿入します。 damyシートに、マクロを有効とする範囲(以下では"C3:K20")と同じ範囲を、対象シートの"C3:K20"と同じ書式にしておきます。要は控えをとっておくんです。 コードを以下に変えてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Rng As Range, SRng As Range Set Rng = Range("C3:K20") If Not Intersect(Target, Rng) Is Nothing Then Set SRng = Selection Sheets("damy").Range("C3:K20").Copy Application.EnableEvents = False Rng.PasteSpecial Paste:=xlPasteFormats SRng.Select Application.EnableEvents = True With SRng.Interior .ColorIndex = 3 .Pattern = xlSolid End With End If Set Rng = Nothing Set SRng = Nothing End Sub いかがでしょう?
- merlionXX
- ベストアンサー率48% (1930/4007)
puchipuriさんこんにちは、merlionXXです。 > 元々塗りつぶしを行っていた全てのセルの塗りつぶしが解除(白くなる)されますが・・・ それでしたら、セルの塗りつぶしが解除されていい範囲=クリックしたとき赤く変わる範囲 を設定することで解決できます。 仮にその範囲を C3:K20 とした場合、以下の記述となります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Rng As Range Set Rng = Range("C3:K20") If Not Intersect(Target, Rng) Is Nothing Then Rng.Interior.ColorIndex = xlNone With Selection.Interior .ColorIndex = 3 .Pattern = xlSolid End With End If Set Rng = Nothing End Sub
お礼
merlionXXさん、回答ありがとうございます。 範囲指定によりほぼ理想通りとなることが出来ましたが、やはりマクロを有効とする範囲にその他の色の塗りつぶしを行うのは不可能なのでしょうか。 といいますのは、元々記入間違いを防止するために1行置きに灰色の塗りつぶしを行っており、さらにその確立を減らすために、ハイパーリンクで飛んできたセルに赤色を表示させたかったのです。赤色に表示された後に灰色に戻るのは無理なのでしょうか。 何度も質問してしまい申し訳ありませんが、ご教示いただけますと幸いです。
- merlionXX
- ベストアンサー率48% (1930/4007)
以下の手順でやってみてください。 1.対象とするシートのタブを右クリックし、「コードの表示」を選択。 2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。 '*****ここから下をコピペ***** Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = xlNone With Selection.Interior .ColorIndex = 3 .Pattern = xlSolid End With End Sub '*****ここより上までをコピペ***** 3.Alt+F11キーでワークシートへもどります。
お礼
回答ありがとうございます。 ご教示いただいた通りにマクロを実行したところ、問題なく動作しました。 追っての質問で申し訳ありませんが、ご教示頂いたマクロを実行すると、元々塗りつぶしを行っていた全てのセルの塗りつぶしが解除(白くなる)されますが、元々の設定を残したまま、このマクロを実行することは可能でしょうか。 宜しくお願い致します。
上のバーか下のバーにペンキ缶の形をした「塗りつぶしの色」というアイコンがありませんか? これをクリックすれば、選んだセルに色をつけられます。色を選ぶのは、すぐ右にある小さな下向き矢印です。 選択セルをずらしたときに自動的に色も変える方法というのは、わかりません。選択したセルに対してもう一度「塗りつぶしの色」アイコンをクリックすれば、同じように色はつきますけれど。
お礼
回答ありがとうございます。 現在のところ、動作も軽く問題は解決しました。 追っての質問で申し訳ありませんが、今回教えていただいた方法は、そのセルの行列の表示が変わりますが、そのセルのみの表示を変えることも可能でしょうか? よろしくお願いいたします。