プロが教えるわが家の防犯対策術!

困っています。よろしくお願いします。
以下のマクロで、
値として「薄緑」(13172680)を入力したのに、その値が勝手に変わってしまいます。
13434828になってってしまいます。そのため、「色消し」が働きません。
また、colorとして「白」(16777215)を設定した場合と、colorindexとしてxlnoneを入力した場合、excelの表上での見た目が違います。なぜでしょうか。また、colorに何を入力するとcolorindexにxlnoneを入力したのと同じになるのでしょうか。


Option Explicit
Public Const 薄緑 As Long = 13172680 '200,255,200
Public Const 白 As Long = 16777215 'rgb(255,255,255)


Sub 色付け()
 Cells(1, 1).Interior.Color = 薄緑
End Sub

Sub 色消し()
   If Cells(1, 1).Interior.Color = 薄緑 Then
   Cells(1, 1).Interior.Color = 白
   End If
End Sub

Sub test()
   Cells(1, 1).Interior.ColorIndex = xlNone
End Sub

Sub test1()
   Cells(1, 1).Interior.Color = 白
End Sub

Sub test2()
   MsgBox Cells(1, 1).Interior.Color
End Sub

A 回答 (2件)

エクセルのバージョンは?



ここを読んでみればだいたい分かるでしょう。

http://officetanaka.net/excel/vba/cell/cell04.htm

Excel 2003なら、エクセルで使える色はカラーパレットに登録されている56色だけです。
カラーパレットには任意の色を指定することができますが、カラーパレットにない色は使用することができません。

Excel 2007以降ならエクセルで使える色は1600万色ですが、ColorIndexで使うカラーパレットは56色のままです。


>colorに何を入力するとcolorindexにxlnoneを入力したのと同じになるのでしょうか。

xlnoneは、塗りつぶしをしないということです。
Excel 2003では、塗りつぶしをしない場合は背景色は白ですから、カラーパレットに白色がなければ何を入れても同じにはなりません。

この回答への補足

ありがとうございます。
バージョンは2003でした。
教えていただいたページを見ました。そこに以下のような記述がありました。これで勝手に数字が変わっていたんだとわかりました。

「Excel 2003までは、Colorプロパティで中間色を指定したとき、Excelが表示できる56色の中から、指定された色に最も近い(とExcelが判断した)色が設定されます。」

もうひとつ教えていただければと思います。質問のしかたがあいまいで申し訳ありませんでした。.interior.colorindex=xlnoneとするとセルの境界の薄い線が表示されます。それはxlNoneは塗りつぶしをしないという事ですね。一方、.interior.color=白 とした場合、背景色は白になりますが、それとともにセルの境界の薄い線が消えます。これは境界まで白に塗ってしまったということだと思います。つまり、.interior.colorindex=xlnone によって「塗りつぶしをしない」という事を実現できるわけですが、.interior.color=なにか ということによって「塗りつぶしをしない」ということを実現できるのでしょうか。また、.interior.colorindexを使わずに「塗りつぶしをしない」ということを実現できるのでしょうか。

補足日時:2012/10/21 09:01
    • good
    • 0
この回答へのお礼

ありがとうございます。これからはある程度勝手に変わるということを前提にマクロを組みたいと思います。助かりました。

お礼日時:2012/10/21 09:05

>.interior.color=なにか ということによって「塗りつぶしをしない」ということを実現できるのでしょうか。


>また、.interior.colorindexを使わずに「塗りつぶしをしない」ということを実現できるのでしょうか。

できません。

Colorプロパティは塗りつぶしなしをサポートしていません。
    • good
    • 1
この回答へのお礼

ありがとうございます。サポートしていないのですね。別の方法を考えます。

お礼日時:2012/11/05 21:53

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