Excel VBA質問箱 IV

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

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


4699 / 13644 ツリー ←次へ | 前へ→

【55041】RGB指定の弊害を教えてください 七志 08/4/12(土) 7:40 質問[未読]
【55062】Re:RGB指定の弊害を教えてください SS 08/4/13(日) 13:41 発言[未読]
【55063】Re:RGB指定の弊害を教えてください 七志 08/4/13(日) 14:40 発言[未読]
【55067】Re:RGB指定の弊害を教えてください neptune 08/4/13(日) 23:11 発言[未読]
【55069】Re:RGB指定の弊害を教えてください 七志 08/4/14(月) 4:16 発言[未読]
【55071】Re:RGB指定の弊害を教えてください VBWASURETA 08/4/14(月) 9:21 発言[未読]
【55072】Re:RGB指定の弊害を教えてください VBWASURETA 08/4/14(月) 9:33 発言[未読]
【55076】Re:RGB指定の弊害を教えてください neptune 08/4/14(月) 14:21 発言[未読]
【55077】Re:RGB指定の弊害を教えてください VBWASURETA 08/4/14(月) 16:56 発言[未読]
【55084】Re:RGB指定の弊害を教えてください neptune 08/4/14(月) 21:58 発言[未読]
【55088】Re:RGB指定の弊害を教えてください 七志 08/4/15(火) 0:10 発言[未読]

【55041】RGB指定の弊害を教えてください
質問  七志  - 08/4/12(土) 7:40 -

引用なし
パスワード
   すみません。どうしても分からないので教えてもらえないでしょうか?

図形の線色を変更する為にソースの中に、
Selection.ShapeRange.Line.ForeColor.RGB = RGB(255,10,10)
と指定したのですが、

Line.ForeColor.RGBと指定するのは出来るけど良くないとの指摘を受けました。
VBやVBAの常識的には、Selection.ShapeRange.Line.ForeColor.SchemeColor = 2
等とするらしいのですが・・・

【質問1】RGBだとどのような弊害があるのでしょうか?
【質問2】これは当たり前(常識の範疇)なのでしょうか?

本やネットで調べても、その弊害となる情報源が、
どうしても見つかりません。どなたかご教授願いませんか?(>_<)

【55062】Re:RGB指定の弊害を教えてください
発言  SS  - 08/4/13(日) 13:41 -

引用なし
パスワード
   ▼七志 さん:
こんにちは、答えではないのですが一言いいですか?
>Line.ForeColor.RGBと指定するのは出来るけど良くないとの指摘を受けました。
先ず、この指摘された方が、どのような意見をお持ちなのか書いた方が良いと思いますよ。
発言者の真意がわからないときは、他人が口出しするのに慎重になりますから。
それでは、私も興味がありますので有意義な回答があると良いですね。


>すみません。どうしても分からないので教えてもらえないでしょうか?
>
>図形の線色を変更する為にソースの中に、
>Selection.ShapeRange.Line.ForeColor.RGB = RGB(255,10,10)
>と指定したのですが、
>
>Line.ForeColor.RGBと指定するのは出来るけど良くないとの指摘を受けました。
>VBやVBAの常識的には、Selection.ShapeRange.Line.ForeColor.SchemeColor = 2
>等とするらしいのですが・・・
>
>【質問1】RGBだとどのような弊害があるのでしょうか?
>【質問2】これは当たり前(常識の範疇)なのでしょうか?
>
>本やネットで調べても、その弊害となる情報源が、
>どうしても見つかりません。どなたかご教授願いませんか?(>_<)

【55063】Re:RGB指定の弊害を教えてください
発言  七志  - 08/4/13(日) 14:40 -

引用なし
パスワード
   SS さんご意見ありがとうございます。

>>Line.ForeColor.RGBと指定するのは出来るけど良くないとの指摘を受けました。
>先ず、この指摘された方が、どのような意見をお持ちなのか書いた方が良いと思いますよ。

そのご指摘頂いた人の意見は
「RGB指定は無理矢理セットしているのだから使うべきでは無い」
そもそもVB/VBAを使用する人であれば常識であると半ば呆れ気味でした。
その後も何度かご指摘内容についてご質問させて頂いたのですが、
同じ内容の繰り返しで、裏付けがとれないままになっています。

RGB指定の弊害について、どうやったら知る事が出来るのでしょうか?
ひとまず、引き続き本やネットで調べてみます(>_<)

【55067】Re:RGB指定の弊害を教えてください
発言  neptune  - 08/4/13(日) 23:11 -

引用なし
パスワード
   ▼七志 さん:
こんにちは

回答と言うより、使った事無いので、全くの私見ですが、
>そのご指摘頂いた人の意見は
>「RGB指定は無理矢理セットしているのだから使うべきでは無い」
RGB指定は言語仕様がそうできるようになっているので、無理やりとは
いえないと思います。無理やりと言うよりも任意の色をしていすると
言う解釈が適当かと思います。

>そもそもVB/VBAを使用する人であれば常識であると半ば呆れ気味でした。
・・・・結構長い間使ってますが、知りませんでした。
グラフィックは殆どやったことないですけど。

>RGB指定の弊害について、どうやったら知る事が出来るのでしょうか?
多分調べられないのでは?言語仕様にあってますから。。。
日本語しか調べてないですけど、私にはわかりませんでした。

弊害と言えば、プログラミング上、定数を直接ハードコーディングすると
どんな色か判らなくなりますし、プログラムの変更、修正等の時、
抜けが生じたり、わけが判らなくなったりします。
そういう数字をさす言葉にマジックナンバーと言う言葉がありますが、
マジックナンバーを極力使わないと言うのは定石です。

RGB関数は任意のRGB値のLong型の値を返します。
SchemeColorもあらかじめ定義された、Long型の定数じゃないでしょうか。
その違いでは?言葉の意味からしてもそのように思えます。
処理は少しくらいはSchemeColorが速いかも知れませんね??

まぁ、マジックナンバーだけ気をつけて置けば、気にしなくても良いような
気がしますけど。

【55069】Re:RGB指定の弊害を教えてください
発言  七志  - 08/4/14(月) 4:16 -

引用なし
パスワード
   neptune さんご意見ありがとうございます。

>>「RGB指定は無理矢理セットしているのだから使うべきでは無い」
>RGB指定は言語仕様がそうできるようになっているので、無理やりとは
>いえないと思います。無理やりと言うよりも任意の色をしていすると
>言う解釈が適当かと思います。

私もneptuneさんと同じ解釈をしています(ご指摘前後共)

>>RGB指定の弊害について、どうやったら知る事が出来るのでしょうか?
>多分調べられないのでは?言語仕様にあってますから。。。

RGBプロパティに関しては以下の通りで間違い無いと思います。
・言語仕様が合っている
・開発元のマニュアルにも制約・注意事項記述なし
(但し、日本語しか確認出来てません)

あと、他に考えられるのはVB/VBAを使用する技術者の経験則で
全てのVB/VBA技術者が同じように感じる共通認識なのか…
でも、その場合でも本や文献等に出てくるはずと思うんですけどね。


>マジックナンバーを極力使わないと言うのは定石です。

すみません。投稿の例ではマジックナンバーを使っていますが、
実際のコーディングでは以下の様に変数を使用しています。
Selection.ShapeRange.Line.ForeColor.RGB = RGB(color1R, color1G, color1B)
(説明でどんな値が入るかイメージしやすいように固定で書いたのですが、
 これからはなるべく原文で記述したほうが良さそうですね)


>RGB関数は任意のRGB値のLong型の値を返します。
>SchemeColorもあらかじめ定義された、Long型の定数じゃないでしょうか。

この点は私も同じ認識です。

>その違いでは?言葉の意味からしてもそのように思えます。
ハッキリしているのは指定の方法が違うだけなんですよね。
でも、その違いだけではRGBの指定を避ける理由にはならない
と思っています。

>処理は少しくらいはSchemeColorが速いかも知れませんね??
ポイントとなるのはこの点くらいでしょうか?
明らかにSchemeColor指定の方が速いって話なら納得出来ますが、
実際のところはどうなんでしょう?
少し時間がかかるかもですが実測してみますね。

【55071】Re:RGB指定の弊害を教えてください
発言  VBWASURETA  - 08/4/14(月) 9:21 -

引用なし
パスワード
   皆さんおはようございます。

言語が違うので、何ともいえませんが。
RGBで、問題になったのはJavaとC#ぐらいかなっと。

特定の色で色が消えて描画されない問題や
描画順位によって描画が消える問題があったぐらいです。

そいえば、グラフィックボードのドライバーによって弊害もあったりしました。
画面が点滅するとかなど。

【55072】Re:RGB指定の弊害を教えてください
発言  VBWASURETA  - 08/4/14(月) 9:33 -

引用なし
パスワード
   追記です。

最後のグラフィックボードの問題は、最新のドライバーを更新していなかったためと
ある特定の操作だけでなっていたので参考にならないかもしれません。

【55076】Re:RGB指定の弊害を教えてください
発言  neptune  - 08/4/14(月) 14:21 -

引用なし
パスワード
   ▼VBWASURETA さん:
こんにちは
七志さん>
>>処理は少しくらいはSchemeColorが速いかも知れませんね??
>ポイントとなるのはこの点くらいでしょうか?
>少し時間がかかるかもですが実測してみますね。
殆どわからない程度のような気がしますね。誤差範囲程度??^ ^;;
いや、検証なしで書きましたので、無駄手間だったらごめんなさん。


VBWASURETA さん>
>言語が違うので、何ともいえませんが。
>RGBで、問題になったのはJavaとC#ぐらいかなっと。
すみません、ちょっと探してみたのですが、見当たりませんでした。
 よろしければ参考までにC#でそのような情報が掲載されているサイトを
お教え願えませんでしょうか?javaは知らないので^ ^;;

でも、VB(A)、VB6などではエンジン(でいいのかな?)が違うので関係ないかも?
javaは置いといて、C#での問題と言う事は、frame workの問題ですよね。

生Cや生C++ + APIでもあるんですかね?あれば、VBも関係するかも
しれませんが。。
聞いた事はないものの、なにせ、グラフィック関係はトンとわかりません。
ペンやブラシなど、色関係の操作ではRGBなしには書けませんものね。

【55077】Re:RGB指定の弊害を教えてください
発言  VBWASURETA  - 08/4/14(月) 16:56 -

引用なし
パスワード
   ▼neptune さん:
>すみません、ちょっと探してみたのですが、見当たりませんでした。
> よろしければ参考までにC#でそのような情報が掲載されているサイトを
>お教え願えませんでしょうか?javaは知らないので^ ^;;

すみません^^;
去年に調べていたので当時の資料HPがリンク切れしてたりないです。
後は図形が重なったりする場合の描画順位で描画されない場合があるとか
ですね。これは描画を描くソース順に影響があったはずです。
これぐらいです。

//l.huu.cc/g/


ただ、C#だと確かRGB 0,0,0 黒=透過するとか聞いたことありませんか?
Javaは確かRGB 255,255,255 白=透過する場合があります。

だったと思います。

【55084】Re:RGB指定の弊害を教えてください
発言  neptune  - 08/4/14(月) 21:58 -

引用なし
パスワード
   ▼VBWASURETA さん:
こんにちは

ご返答ありがとうございます。

>すみません^^;
>去年に調べていたので当時の資料HPがリンク切れしてたりないです。
>後は図形が重なったりする場合の描画順位で描画されない場合があるとか
>ですね。これは描画を描くソース順に影響があったはずです。
了解です。

>ただ、C#だと確かRGB 0,0,0 黒=透過するとか聞いたことありませんか?
透過もやったこと無いので、調べました。これですね。
h tp://msdn2.microsoft.com/ja-jp/magazine/cc163435.aspx
対応策が書いてありますが、これは知らないと悩みますね。
聞いてよかったです。

myTipsDBに取り込んでおきます。
ありがとうございました。

【55088】Re:RGB指定の弊害を教えてください
発言  七志  - 08/4/15(火) 0:10 -

引用なし
パスワード
   neptune さんへ
>>>処理は少しくらいはSchemeColorが速いかも知れませんね??
>>ポイントとなるのはこの点くらいでしょうか?
>>少し時間がかかるかもですが実測してみますね。
>殆どわからない程度のような気がしますね。誤差範囲程度??^ ^;;
>いや、検証なしで書きましたので、無駄手間だったらごめんなさん。

簡単に実測してみました。
40万回繰返時の実行時間の比較を行いましたが40秒±1秒未満の誤差でした。
今回は秒までしか取得せずに計測したので正確ではありませんが、
ハッキリ違いが出るような差は無い事が分かりました。

VBWASURETA さんへ
>言語が違うので、何ともいえませんが。
>RGBで、問題になったのはJavaとC#ぐらいかなっと。
>ただ、C#だと確かRGB 0,0,0 黒=透過するとか聞いたことありませんか?
>Javaは確かRGB 255,255,255 白=透過する場合があります。
C#やJavaは透過する設定も兼ねているんですね。
私がVBAで使用している限りではRGB 0,0,0=黒、255,255,255=白で
問題無さそうですが、違う言語を使う場合は0,0,0と255,255,255の
両方の動作確認する必要がありそうですね。

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