• ベストアンサー

EXCEL2010でRGB指定できない

バグではないかと思いますが。 excel2007では動くのにExcel2010では動かない。 Cells(3,3).Interior.Color=RGB(0,0,255) Blueを指定するとErrorになります。 事情がおわかりの方 お教えください。

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

  • ベストアンサー
回答No.5

エラーが出るブックで、以下のプログラムを試してみて下さい。 Dim r, g, b As Integer Dim c1, c2 As Long For b = 0 To 255 For g = 0 To 255 For r = 0 To 255 c1 = RGB(r, g, b) c2 = b * 65536 + g * 256 + r If c1 <> c2 Then MsgBox "RGB(" & CInt(r) & "," & CInt(g) & "," & CInt(b) & ")の値[" & CInt(c1) & "]は正しくありません。" & Chr(13) & Chr(10) & "正しい値は[" & CInt(c2) & "]です" End If Next Next Next MsgBox "テストが終了しました" もし「RGB()と言う、ユーザー関数があって、変な値を返している」と言う場合、このテストで判明します。 テストで異常が判明した場合は「RGB(r,g,b)」と書く代わりに「b * 65536 + g * 256 + r」と書いてみて下さい。 テストで異常が出ずに「テストが終了しました」しか出なかった場合「シート内の書式設定が多過ぎて、1シートに許された書式の限界を超えた」か、または「ブックが破損している」か、どちらかです。 >また,シートで操作しようとしても >書式が多すぎます」といって受け付けなくなります。 ありゃりゃ。それは確実に「1シートに許された書式の限界を超えた」のでしょうね。 書式の限界に達したのなら「青だけエラーになる」も「Excel2007ではOKで2010でNG」も、どちらもツジツマが合います。 シート内の書式設定の個数が「限界になっている状態」で、どこかのセルに背景色を設定した場合、同じシート内のどこかで同じ色を使っているならば「色が付いたセルが増えるだけ」で「書式の個数」は増えません。 しかし、今まで使ってない色を背景色にしようとすると「新しい書式が1つ増える」ので、もし、新しい書式を記録する余裕が無ければ「書式が多すぎます」のエラーが出ます。 で、2007と2010では、1つの書式に使用される容量が増えたので、書式用の領域に格納できる「書式の個数」に違いがあります。 例えば、1つの書式に100バイト使っていたのを、機能拡張して120バイト使うようになると、1個の書式で20バイト余計に使ってしまうので、全体のサイズが同じであれば「格納できる書式の個数が減ってしまう」と言う事になります。 もし、2007で「書式の個数が限界近くだったけどギリギリセーフ」と言う状態だと、2010に持って行っただけで「書式用の領域がオーバーする」ので、動かなくなってしまいます。 そういう訳で「2010でのみ、背景色を青くしようとしたら、エラーで失敗する」と言う状況が起きます。 削除したり消去したセルに付いていた書式設定が、使われないままシート内の書式設定領域に残っている可能性があるので、新規のブックを作成して、そのブックに「使っている範囲のセル」と「マクロのモジュール」だけを貼り付けて、新規ブックで保存してみましょう。 新規ブックに必要な物だけを全部移して、未使用のゴミを捨て去れば、2010でも上手く動くかも知れません。 なお、それで試してもダメならば「書式設定の個数を減らすしかない」ので、背景色を青くするのは諦めるしかありません。

yamutya
質問者

お礼

納得です。 ありがとうございました。 For i=0 to 255 For j=0 to 255 cells(i,j)の色指定 Next:Next で書式を多量設定したので 後半で色の指定ができなくなった わけですね。 明快で,深い理解に基づく すばらしい回答をありがとうございました。

その他の回答 (4)

  • CC_T
  • ベストアンサー率47% (1038/2202)
回答No.4

当方でもNo.3回答同様の表示できますね。 office最新版でないなら、アップデートを試してみてください。 ~~~ カラーコード指定(R+G×256+B×256^2)で  Cells(3,3).Interior.Color = 16711680 としたら、どうなるでしょうか?

yamutya
質問者

お礼

ありがとうございました 書式設定の数が限界を超えたのが原因でした。 お騒がせいたしました。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

新規Bookで試した限りではできました。 Excel2010で新規Bookでもダメかな? 添付画像は投稿用に列幅・行高ともに最小にしてます。

yamutya
質問者

お礼

ありがとうございました 書式設定の数が限界を超えたのが原因でした。 お騒がせいたしました。

  • CC_T
  • ベストアンサー率47% (1038/2202)
回答No.2

動作報告のみ。 こちらでは問題なくC3セルが青塗表示できました。 No,1さんが示されたように、保護かけて試すと、 「実行時エラー1004:アプリケーションン定義またはオブジェクト定義のエラーです」 が出ますね。 なお当方、 EXCEL2010 (バージョン:14.0.6.122.5000(32ビット) VBAのバージョン:1627 の環境です。

yamutya
質問者

お礼

ありがとうございます。 For i=1 to 255 For j=1 to 255 cells(i,j).Interior.Color=RGB(i,0,j) Next Next でError また,シートで操作しようとしても 書式が多すぎます」といって受け付けなくなります。 OS Windows7 Office2010 です。 Vista Office2007では動きました。

回答No.1

>Blueを指定するとErrorになります。 Interior.Colorの設定でerrorが出るとしたら、C3セルが「ロック」になっていて、かつ、シートが保護されている場合です。

yamutya
質問者

お礼

ありがとうございました。 保護はかけていません。 BlueだけでErrorです。 赤にはなるのです。 Cells(3,3).Interior.Color=RGB(255,0,0)ではよくて Cells(3,3).Interior.Color=RGB(255,0,255)ではだめなのです。

関連するQ&A