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

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

A 回答 (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でも上手く動くかも知れません。

なお、それで試してもダメならば「書式設定の個数を減らすしかない」ので、背景色を青くするのは諦めるしかありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/10 09:12

当方でもNo.3回答同様の表示できますね。


office最新版でないなら、アップデートを試してみてください。

~~~

カラーコード指定(R+G×256+B×256^2)で
 Cells(3,3).Interior.Color = 16711680
としたら、どうなるでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/10 09:18

新規Bookで試した限りではできました。


Excel2010で新規Bookでもダメかな?
添付画像は投稿用に列幅・行高ともに最小にしてます。
「EXCEL2010でRGB指定できない」の回答画像3
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/10 09:20

動作報告のみ。



こちらでは問題なくC3セルが青塗表示できました。

No,1さんが示されたように、保護かけて試すと、
「実行時エラー1004:アプリケーションン定義またはオブジェクト定義のエラーです」
が出ますね。

なお当方、
EXCEL2010 (バージョン:14.0.6.122.5000(32ビット)
VBAのバージョン:1627
の環境です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
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では動きました。

お礼日時:2012/12/12 19:22

>Blueを指定するとErrorになります。



Interior.Colorの設定でerrorが出るとしたら、C3セルが「ロック」になっていて、かつ、シートが保護されている場合です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/12/12 19:18

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