• ベストアンサー

「Cells(1, 1).Interior.ColorIndex = 255」がエラーになる理由

Cells(1, 1).Interior.ColorIndex = 255 を実行するとエラーになります。 「InteriorクラスのColorIndexプロパティを設定できません。」 となります。 しかし Cells(1, 1).Interior.ColorIndex = 34 はエラーにならず水色になります。 赤は255ではないのですか? 何が原因なのかわかりません。 よろしくお願いします。

  • bmgjtu
  • お礼率99% (478/479)

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

IndexColorプロパティのヘルプに答えが書いてあります。 1~56までで、赤は、3になります。 Cells(1, 1).Interior.ColorIndex = 255 また、質問のように255で赤を表したければ、 ColorプロパティとRGB関数を使います。 Cells(1, 1).Interior.Color = RGB(255, 0, 0) 何れにしろそれらのことはヘルプにちゃんと書いてあります。 以上ここまで。  

bmgjtu
質問者

お礼

ColorIndexプロパティとColorプロパティは別物なのですね。ありがとうございます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ColorIndexはコードで56までしかありません。 >何が原因なのかわかりません。 そいう仕組み(仕様)です。色パレットの数と照応しているのかな。 Sub test03() Range("A3").Interior.ColorIndex = 3 End Sub を実行すると、普通の人は、セルが赤になるだろう。 そこで ツールーオプションー色で赤(左上から3番め。ただしコード大小の順で無いらしく、順序がどうなっているのか小生判らないが)のところをクリックして、変更ボタンをクリック。色の設定のダイアロウグで緑の色をクリックしOK,OKで緑に変わる。 このことから、たとえで言うと、学童用の絵の具のパレットのくぼみが56あり、そこに絵の具のチューブから色を搾り出して置くイメージかな。そしてそれを番号で指定して使う。 だからパレットのくぼみの席番号のようなイメージであって、それが56席しかないと言うことだろう。

bmgjtu
質問者

お礼

なるほど。ありがとうございます。

関連するQ&A

  • 【エクセル】「実行時エラー’1004’ InteriorクラスのColorIndeXプロパティを設定できません。」とは?

    いつもお世話になってます。 マクロの記録で、シートの何箇所かの指定した部分のセルの色を白色にして印刷するマクロを作ったのですが、シートを保護すると自動で白色にしますが、印刷しません。 エラーの表示は、 「実行時エラー’1004’ InteriorクラスのColorIndeXプロパティを設定できません。」 です。 デバッグというところを押すと、 記述の「Selection.Interior.ColorIndex = 2」という部分が黄色くなっていました。 解消するにはどうすればよいのでしょうか? どうぞご教示のほどよろしくお願いします。 【エクセル2003】

  • Cells.ColorIndex

    セル全体の色を取りたいのですが Cells.ColorIndex = xlAutomatic だと実行時エラー438になるのですが、 なぜでしょうか?

  • Excelシート上のボタンでセルの背景色を設定する

    シート上のボタンを押したときにセルの値と背景色を設定したいのですが、エラーになります。 原因・解決策が分かる方お願いいたします。 Private Sub CommandButton1_Click() With Range("A1") .Value = "Yellow" .Interior.ColorIndex = 6 '実行時エラー1004:InteriorクラスのColorIndexプロパティを設定できません。 End With End Sub 環境 Excel97/Win98

  • Excel VBA Interior.Color

    困っています。よろしくお願いします。 以下のマクロで、 値として「薄緑」(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

  • エクセルをシートの保護をするとエラーが出る。

    いつもお世話になります。 先日より VBAの記述を教えて頂きエクセルワークシートを作成しましたが (指定の色に色分けするVBA記述でした。)作業をしていると関数を入れているセルを消してしまう問題が発生しました。 その場合 シートの保護をして必要以外のセルを操作出来すれば良いと思い実施してみました。 しかし、VBAを走らすと ”実行エラー’1004’:InteriorクラスのColorIndexプロパティを設定出来ません”とメッセージが出てしまいます。何か良い手だてはありませんか お忙しところ申し訳ありませんが よろしくお願い致します。

  • VBAの[cellsメソッドは失敗しました。Global]エラーの考えられる理由は?

    VBAのコード中にcells(i-1)を含む記述をして、実行しました。最初はうまくいきました。そして、このコードの下に新たな肉付けを行いました。そして、実行をすると[cellsメソッドは失敗しました。Global]というエラーが出てきました。なので、肉付け部分を省き最初のコードに戻して実行しました。すると最初はうまくいったのに今度は、先ほどと同じエラーメッセージが出てきます。これをリセットするにはVBAを再起動するしかありません。ここで傾向として、恐らく肉付け部分に誤りがある状態で実行するとその様な状態に陥ってしまいます。実行前にはきちんとリセットはしているのですが・・・。考えられる原因を教えて頂きたいです。宜しくお願い致します。

  • ExcelVBA .Interior等に、ついて

    毎度、 お世話に、なります。 仮初めに、戯れで 下記の、ような コードを 作って、みた の、ですが Range(Cells(3, 列), Cells(10, 列)).Interior.ColorIndex も、 Range(Cells(3, 列), Cells(10, 列)).Interior.Pattern も、 ウオッチウインドウで 見た限り、では 値が、1つしか 出ません 此って… ? 後、 xlSolid等の 定数、ですが 実際の、値は 何が、当てられて いる の、ですか? もう1つ with ~ て Dosの、フォルダーの ように 1つ上の~~ て、指定 出来ないのですか? 例えば、ですが  With Range(Cells(3, 列), Cells(10, 列)).Interio   let .ColorIndex = 2.0 - (..value >= 90) * 34  End With と、いった感じに ..と 2つ、打つと 階層が、1つ 上に、上がる 的な… ? 無い… ですか? 宜しく お願い、致します                     記 Option Explicit Option Base 0 Const 列 As Long = 5 Sub test()  With Range(Cells(3, 列), Cells(10, 列))   Let .Interior.ColorIndex = Evaluate("2+(" & Range(Cells(3, 列), Cells(10, 列)).Address & ">=90)*32+(" & Range(Cells(3, 列), Cells(10, 列)).Address & "<=70)*34")   Let .Interior.Pattern = Evaluate("If((" & Range(Cells(3, 列), Cells(10, 列)).Address & " > 70)*(" & Range(Cells(3, 列), Cells(10, 列)).Address & " < 90) > 0 ," & CStr(Range(Cells(3, 列), Cells(10, 列)).Interior.Pattern) & ",""xlSolid"")")  End With End Sub                                  以上

  • コンパイルエラー「プロシージャが大きすぎます」とのエラーが出ます

    セルに入力する値によって、重複した場合にセルの色が変化するようにVBAで記述しましたが、設定した行数が多すぎて、コンパイルエラー「プロシージャが大きすぎます」とのエラーが出ます。小さく記述するにはどの様に書いたらよいでしょうか?ご指導お願いいたします。 記述したVBAは下記とおりです。約35行ほどでエラーです。 Private Sub Worksheet_Change(ByVal Target As Range) Set myRng = Range("B2") '2行目の設定 For Each c In myRng If c.Value = "" Then c.Interior.ColorIndex = 2 'B2が空白ならばセルの色を白色 ElseIf c.Value = Range("I2") Then c.Interior.ColorIndex = 3 'B2=I2ならばセルの色を赤色 ElseIf c.Value = Range("J2") Then c.Interior.ColorIndex = 6 'B2=J2ならばセルの色を黄色 ElseIf c.Value = Range("K2") Then c.Interior.ColorIndex = 6 'B2=K2ならばセルの色を黄色 ElseIf c.Value = Range("L2") Then c.Interior.ColorIndex = 8 'B2=L2ならばセルの色を青色 ElseIf c.Value = Range("M2") Then c.Interior.ColorIndex = 8 'B2=M2ならばセルの色を青色 Else c.Interior.ColorIndex = xINone End If Next c Set myRng = Range("C2") '2行目の設定 For Each c In myRng If c.Value = "" Then c.Interior.ColorIndex = 2 'C2が空白ならばセルの色を白色 ElseIf c.Value = Range("I2") Then c.Interior.ColorIndex = 6 'C2=I2ならばセルの色を黄色 ElseIf c.Value = Range("J2") Then c.Interior.ColorIndex = 6 'C2=J2ならばセルの色を黄色 ElseIf c.Value = Range("K2") Then c.Interior.ColorIndex = 6 'C2=K2ならばセルの色を黄色 ElseIf c.Value = Range("L2") Then c.Interior.ColorIndex = 8 'C2=L2ならばセルの色を青色 ElseIf c.Value = Range("M2") Then c.Interior.ColorIndex = 8 'C2=M2ならばセルの色を青色 Else c.Interior.ColorIndex = xINone End If Next c Set myRng = Range("D2") '2行目の設定 For Each c In myRng If c.Value = "" Then c.Interior.ColorIndex = 2 'D2が空白ならばセルの色を白色 ElseIf c.Value = Range("I2") Then c.Interior.ColorIndex = 6 'D2=I2ならばセルの色を黄色 ElseIf c.Value = Range("J2") Then c.Interior.ColorIndex = 6 'D2=J2ならばセルの色を黄色 ElseIf c.Value = Range("K2") Then c.Interior.ColorIndex = 6 'D2=K2ならばセルの色を黄色 ElseIf c.Value = Range("L2") Then c.Interior.ColorIndex = 8 'D2=L2ならばセルの色を青色 ElseIf c.Value = Range("M2") Then c.Interior.ColorIndex = 8 'D2=M2ならばセルの色を青色 Else c.Interior.ColorIndex = xINone End If Next c      ・      ・ End Sub

  • EXCEL セルをコピペすると画面がフリーズする

    お世話になります excelシート イベントでセルの値が変わった時にマクロが実行されるVBAを作成していて、 1行毎の入力作業はうまくいくのですが、式の入っていないセルを複数行をコピペ、 例えばA,Bセルの値が同じものが5件ほどあった場合、最初の入力のものをしたにドラッグして 貼り付けると、画面がフリーズして強制終了せざる負えなくなります。 エラーを回避する方法をご教示お願いいたします。以下VBAの内容です。 Dim sh1 As Worksheet Dim i As Integer Private Sub Worksheet_Calculate() 'detailに指標をセット i = 9 シートをworkエリアにセット Set sh1 = Worksheets(4) 'カードルシート,2ページ(予備)まで指標を回す For i = 9 To 66 '画面ちらつき防止 Application.ScreenUpdating = False '2ページ(予備)目ヘッダーは処理しない If i < 33 Or i > 41 Then 'サンプル番号が入力されている時 If sh1.Cells(i, "E") <> "" Then 'サンプル年月が入力されている時 If IsError(sh1.Cells(i, "K")) <> True Then '基準年月 >= サンプル年月 の時 If sh1.Cells(7, "O") >= sh1.Cells(i, "K") Then '次回サンプル年月 <= 当年月 の時 If sh1.Cells(i, "Q") <= sh1.Cells(8, "O") Then sh1.Cells(i, "M") = "出荷禁止" '該当行を赤色で塗りつぶし With sh1 .Cells(i, "A").Interior.ColorIndex = 3 .Cells(i, "B").Interior.ColorIndex = 3 .Cells(i, "C").Interior.ColorIndex = 3 .Cells(i, "D").Interior.ColorIndex = 3 .Cells(i, "E").Interior.ColorIndex = 3 .Cells(i, "F").Interior.ColorIndex = 3 .Cells(i, "G").Interior.ColorIndex = 3 .Cells(i, "H").Interior.ColorIndex = 3 .Cells(i, "I").Interior.ColorIndex = 3 .Cells(i, "J").Interior.ColorIndex = 3 .Cells(i, "K").Interior.ColorIndex = 3 .Cells(i, "L").Interior.ColorIndex = 3 .Cells(i, "M").Interior.ColorIndex = 3 End With Else '次回サンプル年月 <= 当年月 でない時 sh1.Cells(i, "M") = "OK" End If End If End If Else '該当行を無色で塗りつぶし With sh1 .Cells(i, "A").Interior.ColorIndex = 0 .Cells(i, "B").Interior.ColorIndex = 0 .Cells(i, "C").Interior.ColorIndex = 0 .Cells(i, "D").Interior.ColorIndex = 0 .Cells(i, "E").Interior.ColorIndex = 0 .Cells(i, "F").Interior.ColorIndex = 0 .Cells(i, "G").Interior.ColorIndex = 0 .Cells(i, "H").Interior.ColorIndex = 0 .Cells(i, "I").Interior.ColorIndex = 0 .Cells(i, "J").Interior.ColorIndex = 0 .Cells(i, "K").Interior.ColorIndex = 0 .Cells(i, "L").Interior.ColorIndex = 0 .Cells(i, "M").Interior.ColorIndex = 0 .Cells(i, "M") = "" End With End If End If Next i End Sub

  • Excel VBA 選択した範囲の1行目に色を付けたい

    VBA初心者です。 セルB4~F15に表が作成されています。 プロシージャを実行して、セルB5~F15にブルー。表1行目のセルB4とF4のみに赤の色を付けるというコードを記述したいのです。 以下のように記述しました。 Sub セルに色()    Range("B4").Select    ActiveCell.CurrentRegion.Select    Selection.Interior.ColorIndex = 8    Selection.Range(Cells(1, 1),Cells(1,5)).Interior.ColorIndex = 3 End Sub Rangeでは連続シートになるため、Unionに変更してみましたが、 Unionはオブジェクトがサポートされていない旨のエラーが出ました。 どのように記述すればよいでしょうか? どうぞよろしくお願いいたします。

専門家に質問してみよう