Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1987 / 13645 ツリー ←次へ | 前へ→

【70596】セルの背景色2003,2010 充実野菜 11/12/5(月) 18:26 質問[未読]
【70605】Re:セルの背景色2003,2010 Jaka 11/12/6(火) 9:49 質問[未読]
【70606】Re:セルの背景色2003,2010 UO3 11/12/6(火) 10:32 発言[未読]
【70608】Re:セルの背景色2003,2010 UO3 11/12/6(火) 11:31 発言[未読]
【70656】Re:セルの背景色2003,2010 充実野菜 11/12/12(月) 18:04 お礼[未読]

【70596】セルの背景色2003,2010
質問  充実野菜  - 11/12/5(月) 18:26 -

引用なし
パスワード
   いつもお世話になります

エクセル2003でセルの背景色をInterior.ColorIndexで判定するマクロですが
2010で同じ色のつもりで判定していたのですが動作が異なります

2003で背景色をInterior.ColorIndex=15で設定した背景色を
2010のホームタブで選択されている現在の色をマウスで選択し
2010の他のセルに色付けしました

で、2010で
?activecell.Interior.ColorIndex
でみると
どちらも15になっていました、つまり正常に動作しました

ところが
これを、2003で開いて
?activecell.Interior.ColorIndex
で確認すると
48
15
見た目も、灰色と濃灰で異なっていました、つまり正常な動作とはなりませんでした

2003を2010にリプレイス中なのですが混在状況が当分続きます
過渡期のため両方で編集したりしているのですが
Interior.ColorIndexでは、2003,2010の背景色の判定がうまく出来ないようです

2003,2010で判定するにはどうすれば良いでしょうか

アドバイスよろしくお願いいたします


追記
▼【70454】7機でのBATがうまく動いてくれません 充実野菜
kumattiさん 書込みありがとうございます

目前の処理で手いっぱいです
申し訳ないですが、目前の処理が終わってからの書き込みとなてしまいます

お手すきでしたら、ご回答頂けると嬉しいです
よろしくお願いいたします

【70605】Re:セルの背景色2003,2010
質問  Jaka  - 11/12/6(火) 9:49 -

引用なし
パスワード
   この辺が関係していそうですね。

ht tp:スラスラofficetanaka.netスラexcelスラvbaスラgraphスラ24.htm

htとtpの間のスペースをとり、スラをスラッシュに変えてください。

【70606】Re:セルの背景色2003,2010
発言  UO3  - 11/12/6(火) 10:32 -

引用なし
パスワード
   ▼充実野菜 さん:

おはようございます

まず、言葉の問題なんですが

>つまり正常な動作とはなりませんでした

動作は「正常」です。「結果」が違っているということですね。

officetanaka.net/excel/vba/cell/cell04.htm

2003では背景色としてセットできる色の数は56種類です。
この56種類に対してカラーインデックスも1〜56がアサインされています。
仮に、2003で、ColorIndexではなく、Colorで直接色番号(あるいはRGB関数で指定)で
背景色をセットした場合、「56種類のいずれか、近似値」に強制変更されます。

一方、2007以降は、背景色が1600万色、つまり、可能な色番号すべてがサポートされます。
で、2007以降では、もうColorIndexという考え方そのものが「2003との互換性を保持するためのプロパティ」
の位置づけで、基本的には、もう使うのはやめようねという性格になっているようですね。

>2003,2010で判定するにはどうすれば良いでしょうか

Application.Versionをチェックしてロジックを分岐させるか、あるいは#IFでコンパイルレベルで
生成コードを変えるといった方法があります。

www.asahi-net.or.jp/~zn3y-ngi/YNxv212.html

もう1つは、2007以降での背景色セットを、色指定ではなく明示的に、ColorIndex指定にして
2003カラーインデックスでサポートされている範囲のみ使うということも考えられるかもしれませんね。

【70608】Re:セルの背景色2003,2010
発言  UO3  - 11/12/6(火) 11:31 -

引用なし
パスワード
   ▼充実野菜 さん:

>もう1つは、2007以降での背景色セットを、色指定ではなく明示的に、ColorIndex指定にして
>2003カラーインデックスでサポートされている範囲のみ使うということも考えられるかもしれませんね。

このレスですが、もともとColorIndexで指定される数字は必ずしも特定の色を
規定するものではなく「たまたま」カラーパレットに置かれた順番です。
この順番をわざわざ変更するということはないでしょうけど、(たぶん)変更も可能で
まおかつ変更しなくても、どのエクセルバージョンでも、将来にわたり、この順番と、
その色の紐つけが同じであるという保障はないと思われます。
たとえば2003で6は黄色ですが、いつの日か、別バージョンではパレットの6番目に
青色がセットされる可能性もなきにしもあらずですね。

なので、
・2003でも2007以降でもColorIndexは使わず色番号で指定。
・かつ、2003と2007以降で共用するブックについては、色番号を2003でいうところの
 56種類の色に限定して、その色番号を与える。

こういった対応が安全化と思われます。

【70656】Re:セルの背景色2003,2010
お礼  充実野菜  - 11/12/12(月) 18:04 -

引用なし
パスワード
   遅くなりました

Jaka さん
UO3 さん
ありがとうございます

2003→2010 で 色付けの 手動操作・選択できる色合い等が、かなり変わったと思っていましたが
合わせてコードの処理もずいぶんと変わるものなのですね

URLのご紹介ありがとうございました
この辺まったく知識がありませんでした

UO3 さん
合わせて、詳細な諸注意事項ありがとうございます

>Application.Versionをチェックしてロジックを分岐させるか、あるいは#IFでコンパイルレベルで
>生成コードを変えるといった方法があります。

ご紹介頂いた方法で対処できると思います
ありがとうございました


今後もご指導いただけると嬉しいです
よろしくお願いいたします

解決です

1987 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free