- ベストアンサー
ExcelVBA 赤字のセルを黄色で塗りつぶす
Excel VBA初心者です。 赤いフォントの数字と黒いフォントの数字を使って表を作ります。(空白のセルも有) 列(C~Y) 行(5~1000) 赤いフォントで数字を入力したら、自動的にセルが黄色で塗りつぶされるようにしたいのですが どうしたらいいでしょうか?回答よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 イベントプロシージャなのでシートマクロでお試しください。 対象シートタブ上で右クリック→コードの表示→サンプルコードを貼り付けてお試しください。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("C1:Y1000")) Is Nothing Then Exit Sub If Target.Font.Color = vbRed Then Target.Interior.Color = vbYellow End If End Sub
その他の回答 (5)
- keithin
- ベストアンサー率66% (5278/7941)
>「数字を記入してから赤くする」方法を使っています。 「赤くした」ときに「自動で作動するマクロ」という方法はありません。 なので,「一渡り赤文字にした後,赤文字セルを黄色く塗る」マクロを用意しておいて,そいつを手作業で実行してセルを黄色く塗るといった段取りになります。 マクロ以前にエクセルの操作では,Ctrl+Hで置換のダイアログを出し,ダイアログのオプションボタンを開いて書式の置換で「赤いフォント」を「黄色く塗る+赤いフォント」に「全て置換する」という操作を行い,実現します。これを「新しいマクロの記録」でマクロに録ってやると,ほぼそのまま利用できるサンプルマクロを入手することができます。 ところでここで一つ問題があるのは,ご利用のエクセルのバージョンに応じて「赤いフォント」とか「黄色くセルを塗る」といったマクロの書きぶりが違うため,ご利用のエクセルのバージョンに応じていったいどんなマクロを用意すればよいのかが変わるということです。 具体的なマクロの書きぶりは,あなたが実際にご利用になっているエクセルで「新しいマクロの記録」を使い,「赤いフォントのセル」を「黄色く塗る」に置換するにはいったいどんな書きぶりをしたらいいのか,実際に手を動かしてマクロを録ってみて,参考にしてください。 例:Excel2007以降の場合 Option Explicit Sub Macro1() ' ' Macro1 Macro ' ' Application.FindFormat.Clear Application.ReplaceFormat.Clear With Application.ReplaceFormat.Interior .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Application.FindFormat.Font .Subscript = False .Color = 255 .TintAndShade = 0 End With Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True End Sub 前述したとおり,一渡り赤文字を設定した後に,このマクロを実行することで赤文字セルに黄色の塗り潰しを設定します。 #前述したとおりエクセルのバージョンに応じてマクロが違うため,このマクロはExcel2003以前のエクセルでは実行できません。
お礼
回答ありがとうございます。会社ではExcel 2003を使っていますが、家では2Excel 2010を使っています。 おっしゃる通り置換を使って、マクロの記録を見て確認してみます。初心者の私にも丁寧に教えていただき感謝しています。ありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
>赤いフォントで数字を入力したら、自動的にセルが… だいたい「赤いフォントで数字を入力する」って,一体全体どんな操作を考えているのですか? ふつーは「赤も黒もない通常の文字色(「自動」の色)のセルに数字を記入したあと,フォントの色を赤に変えている」というぐらいが,一般にできることです。 つまり「赤い数字を記入する」んじゃなく,「数字を記入してから赤くする」のがふつーにエクセルを使っているときの段取りですが,あなたは何か特別に「赤いフォントで数字を入力する」シクミとか,あなたが好みの操作の手順があるんでしょうか? たとえば「先にフォントの色を赤にしてあってまだ入力していないセル」が用意してある,つまり『赤いフォントが設定済みのセルに数字を入力』したらセルを黄色くしたい,といった事なら,まだ手の打ちようもあります。
補足
回答ありがとうございます。おっしゃる通りですね。「数字を記入してから赤くする」方法を使っています。 申し訳ありません。
- ・真 綾・(@Ma-yan_bh1011)
- ベストアンサー率30% (79/257)
文字色を判定できないのは先の回答者さんの言うとおりです。 というかそもそも、どうせ該当セルの入力時に文字色を変えるんだろうからその時に背景色も設定するのが一番簡単じゃないかな。
お礼
回答ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルには(操作で)「条件付書式」という仕組みがあります。 これはバージョンで相当変わっているので、エクセルの質問異はバージョンを書かないのは、この辺のことがよくわかって無い証拠です。 この条件付書式の条件に使えるのは、「セルの値」(セルの書式やコメントなどとの対比で、セルの値を意識したことありますか。無いでしょう)を問題にして判断されるものです。 だから、質問の>赤いフォント、を条件として、掴めないのです。条件つき書式の「数式が」で式を作るとき、書きようが無いのです。「数式が」に対するもうひとつは「セルの値が」になっています。「セルの書式が」、などが用意されていません。 ーー だからVBAででもやらないと出来ません。こういう質問をするぐらいだからVBAは経験無いと思います。だから質問のことは質問者には出来ません。VBAを使ってでも、やりたくて、回答丸写しになってもでも、答えがほしいなら、再質問でもしたらどうですか。
お礼
回答ありがとうございます。勉強不足で申し訳ありません。
- tamiemon96
- ベストアンサー率49% (658/1341)
発想を変えて・・・ 普通に、全て黒い色で文字を入れて、 クリックしたら 赤字・黄色染め サイドクリックしたら 黒字・白地にもどす っていうマクロの方が、作りやすくないですか。 頑張ってください。
お礼
そういう考え方もあるんですね。ありがとうございます。
お礼
回答ありがとうございます。早速、コードを貼り付けて実行してみました。 感激です!!できました。ありがとうございました。