• ベストアンサー

VBAでセルに色付けは?

教えてください エクセルの条件付き書式では下記の 事ができません。 VBAでセルに色をつける 方法を教えて欲しいのですが。 例 セルA1 に 10   セルB1 に 入れた数字が      10以下なら   青   11から20なら 赤   21から25なら 黄   26以上なら   ピンク   と言う感じで  B1 のセルに   その数字と色を表示したいのですが   最終的には8色表示にしたいです。   よろしくお願いします   WINXP  EXCLは2002です

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

補足ありがとうございます。長くなるので、あきらめても良いが まだ良くわかりません。 >セルAの室温とセルBに入れた温度を比較してセルBに数字と色をつけたいのです 「数字と色を」の「数字と」の意味が、「数字をセルにセット」=代入する意味なら 「セルBに数字があってAと比較して、セルBに数字をセットする」 はおかしくありませんか。 文字とセル背景色に色をつけたいのなら、 Font.Color nterior.Color と設定を、プログラムでは2行入れれば済むことです。 ただその場合セル色と文字は別色にしないとならず、質問には書いてない。 設定するセルの色(A列+B列ですか)は、当初質問値のBの値の段階でよいらしいですね。 (質問書き直し) B列の値にしたがって   10以下なら   青   11から20なら 赤   21から25なら 黄   26以上なら   ピンク の色を、A列とB列のセルの文字と、A、B列の背景色を設定したい。 ーーーー 下記はセル背景色だけ設定してます。 Sub test01() d = Range("B65536").End(xlUp).Row For i = 2 To d Select Case Cells(i, "B").Value Case Is <= 10 Cells(i, "A").Interior.Color = vbBlue Cells(i, "B").Interior.Color = vbBlue Case 11 To 20 Cells(i, "A").Interior.Color = vbRed Cells(i, "B").Interior.Color = vbRed Case 21 To 25 Cells(i, "A").Interior.Color = vbYellow Cells(i, "B").Interior.Color = vbYellow Case Else Cells(i, "A").Interior.Color = vbCyan Cells(i, "B").Interior.Color = vbCyan End Select Next i End Sub ただしVBA実行後に値を変えても、再実行しないと反映しない仕組みです。

minokumi
質問者

お礼

ややこしい質問に回答いただき ありがとうございます。 どうも、いろいろ質問に抜けがあるみたいでまことに すみません。 もうすこし質問文を整理してから、また再度 質問 したいと思います。 お付き合いほんとうにありがとう ございました。次回お目にとまりましたらまた ご指導よろしくお願いします

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

#3です。補足ありがとうございます。しかし 「セルA1にいれた数字に対して (0~25まで変ります例では10にしてます)B1に入れた数字を8段階の条件で色分けしたかったのです」は、読んでもなお、よくわかりません。 A1とB1の値を関連させて、B1の書式を考えるのか 関係なくB1の値だけ考えてB1の書式を考えるのか それ以外か(その場合はないよう説明を) 補足してください。 実例数例をを上げてもらうのが良いかも知れません。 A1の値 ?? B1の値  ?? のとき書式は ???

minokumi
質問者

お礼

早々の回答ありがとうございます。自分ではわかっているので 雑な説明になってしまっているようですね、また説明も若干 違っていたようです。すみません 具体的にはセルAには、現在の室内の温度が入ります セルBにはある物体の発熱温度がはいります セルAの室温とセルBに入れた温度を比較してセルBに数字と 色をつけたいのです。色分けの範囲は最初の質問の設定で 行うので8段階になるため8色必要になります 測定点が20箇所あるので色分けで見えるようにしたい 例 セルA1室温25℃   セルB1  40℃ (40-25=15赤)   セルC1  55℃ (49-25=24黄色) 。。。こんな感じで理解いただけたでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

私もセルA1とセルB1の(1)条件として取り扱うのか(2)その関係は について、判りません。至急細くしてください。 ーーーーーー >エクセルの条件付き書式では下記の事ができません。 これは条件付き書式が、3色までということを意識したものですか。 そうであれば、セル範囲にはできないが、下記のように、VBAなら FormattConditionsを使うことができるので、 、細かく言えば、「できないとは言えない」と思います。条件付き書式をDELETE して設定が瞬時に行える(初めからシート全体のケースを設定して置かなくて良いからです。 下記コードのMsgBox 3つは確認用に入れたもので、用済み後ははずします。 質問と同じ値の区画で、セルに色をつけるものです。どのセルでも 全セル対象にしてます。 Private Sub Worksheet_Change(ByVal Target As Range) v = Array(0, 10, 20, 25, 999) c = Array(0, 4, 6, 7, 8) For i = 0 To UBound(v) If Target >= v(i) Then Else f2 = v(i) MsgBox v(i) f1 = v(i - 1) MsgBox v(i - 1) MsgBox c(i) Exit For End If Next i Target.FormatConditions.Delete Target.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _ Formula1:=f1, Formula2:=f2 Target.FormatConditions(1).Interior.ColorIndex = c(i) End Sub ただ、普通は#2のご回答のようにして、こんな馬鹿な回りくどい方法はやらないと思いますが。 ーーーーーー 色とそのコードを選ぶとき Sub test01() For i = 1 To 56 Cells(i, "B").Interior.ColorIndex = i Next i End Sub をやって、セル(B列)に色見本を出し、良さそうなのを選んでください。セル色の場合、下の字が見えなくならないよう選ぶ必要がありますから。 vbXXX式は十数種あったと思いますが、濃すぎてセル色には向かない色があって、残り少なくなるので、ColorIndexの50数種から選んだほうが良いのではと思います。Fontなら逆に薄すぎて、区別しにくい色があります。8色でも選定に苦労するでしょう。

minokumi
質問者

お礼

ありがとうございます。 説明が足りなくてすみません。 セルA1にいれた数字に対して (0~25まで変ります例では10にしてます) B1に入れた数字を8段階の条件で色分けしたかったのです セルはB1としていますが、実際は20セルぐらい使います。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$1" Then Select Case Target.Value Case Is <= 10 Target.Interior.Color = vbBlue Case 11 To 20 Target.Interior.Color = vbRed Case 21 To 25 Target.Interior.Color = vbYellow Case Else Target.Interior.Color = RGB(&HFF, &HC0, &HCB) 'Pink End Select End If End Sub

minokumi
質問者

お礼

ありがとうございます。 BVAはあまり自信がないので 一度やってみます。

回答No.1

質問の意味が分からないのですが? (1)セルA1とB1の関係は? (2)セルA1に入れた数字で、セルBに作用させたいということですか? セルB1にセルA1と同じ数字を入れて、文字の色を変えたいということですか? それなら、条件付き書式でできますが?

minokumi
質問者

お礼

説明が足りなくてすみません。 セルA1にいれた数字に対して (0~25まで変ります例では10にしてます) B1に入れた数字を8段階の条件で色分けしたかったのです セルはB1としていますが、実際は20セルぐらい使います。

関連するQ&A