公式アカウントからの投稿が始まります

EXCEL・VBAにて.Interior.Color=RGB(152, 251, 152)と設定しましたが
思った色(緑系の色)ではなくグレー系の色になってしまったのですが、
何か間違っているのでしょうか?
何かわかる方いらっしゃいますでしょうか?
実際のソースはしたの通りとなります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 13 Then Exit Sub
Application.EnableEvents = False
'ステータス欄の入力の判断
Select Case Target.Value
Case "あああ"
Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(152, 251, 152)
Case "いいい"
Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(254, 208, 224)
Case "ううう"
Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(255, 255, 0)
Case "えええ"
Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(192, 192, 192)
Case Else
Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(255, 255, 255)
End Select
Application.EnableEvents = True
End Sub

A 回答 (1件)

こんばんは。



Interior に RGB 関数で色を設定しても、Excel がもつカラーパレットの
値に丸められてしまうからです。

ごく稀に(というか昔は普通に)書籍等でも、

Cells(1,1).Interior.Color = RGB(255,0,0)

のようなコードを見受けますが、この例は誤解を招くだけの悪例です。

任意の色を使用したい場合、カラーパレット側を変更しなければなりません。
なお、カラーパレットはブック毎に管理されてます。

Sub Sample()

  MsgBox "カラーパレットを変更し、任意の色でセルを着色します"
  ' // WEB COLOR CODE: #CCFF66
  ThisWorkbook.Colors(1) = RGB(204, 255, 102)
  Cells(1, 1).Interior.ColorIndex = 1
  
  ' // カラーパレットをリセットする
  'ThisWorkbook.ResetColors

End Sub
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
なぜうまくいかない理由は理解できました。
なんとなく予想はしていたのでしたが・・・。
これからもよろしくお願いいたします。

お礼日時:2007/04/05 00:44

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