困っています。よろしくお願いします。
以下のマクロで、
値として「薄緑」(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ランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
scanfが2回使えない・・・?;
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
"scanf"でエンターで改行させな...
-
if文の条件にscanf関数を使うと…?
-
2進数の1の数を数える問題
-
cout関数を使っているのですが...
-
プログラミングの問題で、キー...
-
プログラミングの問題です 「金...
-
scanf が無視されます
-
scanf関数について
-
C言語 逆ピラミッドの作り方
-
scanf("%s", buf);でスペースを...
-
Eclipseコンソール表示を、リセ...
-
VBでの日付入力値のフォーマッ...
-
enterでループ終了
-
UWSCで変数をキー入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報