
困っています。よろしくお願いします。
以下のマクロで、
値として「薄緑」(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
No.1ベストアンサー
- 回答日時:
エクセルのバージョンは?
ここを読んでみればだいたい分かるでしょう。
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を使わずに「塗りつぶしをしない」ということを実現できるのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseコンソール表示を、リセ...
-
数字以外が入力されたらエラー...
-
java初心者です。入力されたの...
-
scanfが2回使えない・・・?;
-
C言語・YesNo入力のループで解...
-
正負を反転させて出力するプロ...
-
getchar()について 教えてくだ...
-
"scanf"でエンターで改行させな...
-
コマンドプロンプトからのEOFの...
-
至急教えてください!プログラ...
-
*をユーザーが入力した数字の数...
-
scanf関数 バッファに残ったエ...
-
入力候補を表示させるには・・・?
-
EDITコントロールで入力できる...
-
Excel VBAで、Application.Inpu...
-
入力値が1以下、かつ数字以外の...
-
WindowsでEOF
-
電卓の小数点
-
getcharをしながらwhile文で出...
-
ワードで文字を入力する時の変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
数字以外が入力されたらエラー...
-
Excel VBAで、Application.Inpu...
-
EDITコントロールで入力できる...
-
*をユーザーが入力した数字の数...
-
Linuxプログラミングで、キーボ...
-
Eclipseコンソール表示を、リセ...
-
入力候補を表示させるには・・・?
-
batプログラム上で文字列を入力...
-
UWSCで変数をキー入力
-
VisualStudio2019のコードアナ...
-
小数か整数かを判定する方法
-
scanfが2回使えない・・・?;
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
Delphi初心者 ボタン操作につ...
-
コマンドプロンプトからのEOFの...
-
Eclipseでコマンドラインを入力...
-
Userformの入力順序をタブオー...
おすすめ情報