重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

当方、VBA初心者です。
Excelは2003です。

特定の文字列で違うセルの色を変えたいのですが、過去質問等を検索していじってみたりしたのですが、うまくいきませんでした。

例ですが、J14のセルに"DF260"と表示した時はK20のセルを黒色に、
同じJ14のセルに"DF030"と表示した時はK20のセルを赤色にしたいのですが、
色の種類が20種類ほどあり、条件付き書式ではできませんでした。

御教授お願い致します。

A 回答 (2件)

シート名タブを右クリックしてコードの表示を選ぶ


現れたシートに下記をコピー貼り付ける

private sub Worksheet_Change(byval Target as excel.range)
 dim h as range
 if application.intersect(target, range("J14")) is nothing then exit sub

 for each h in target
  select case h.value
  case "DF260"
   range("K20").interior.colorindex = 1
  case "DF030"
   range("K20").interior.colorindex = 3
  case else
   range("K20").interior.colorindex = xlnone
  end select
 next
end sub

J14以外のセルも対象にしたいことを想定していますが、ホントにJ14(とK20)だけ見るのでいいなら、その旨もっと簡素化して下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。
完璧にうまくいきました。

お礼日時:2013/02/07 11:38

http://www.happy2-island.com/excelsmile/smile03/ …

Range("K20").Interior.ColorIndex = 色番号

として指定するだけです
色番号
(黒)=1
(赤)=3

VBA中で色番号指定にはIF文等で

If range("J14")= "DF260" Then
色番号 = 1
ElseIf range("J14")= "DF030" Then
色番号 = 3
End If

と判定する必要があります(条件判定にはIf以外の選択肢もあります)
色の種類が20種類もあるのであれば、条件と色番号の一覧表と作業セルをシート内に用意して

作業セル に

=VLOOKUP(J14,一覧表範囲,2,0)

としてVBAで

Range("K20").Interior.ColorIndex = 作業セル.Value

とするだけで実現出来ます
VBA内で条件式を作成しようとすると結構躓きやすいです
複雑な計算式の場合シート上で関数ウイザードを利用して計算式を構築するほうが容易に実現出来ます
    • good
    • 0
この回答へのお礼

ありがとうございました。
この方法も試してみます。

お礼日時:2013/02/07 11:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!