• ベストアンサー

色が全然違う色になる

フォームの背景の色をデザインビューで確認すると#FF9A05になってるので、 フォームに乗ってるコントロールの色をVBAで ctl.BackColor = &HFF9A05に指定したのですが 実際にコードを実行すると、 フォームの色はオレンジで、vbaでctl.BackColor = &HFF9A05で指定した色は水色になります。 なぜ全然違う色になっちゃうのでしょうか? どちらもオレンジにしたいです。 なぜコントロールはvbaで行うかというと、細かい条件を指定したいからです。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 >はどうやってこの値がわかったのですか? についてですが、 PCにある電卓を使用しました。 Windows8でやってみると アプリの「電卓」を起動 → 普通の電卓になっていると思いますので → 表示 → プログラマ → 16進数を選択 → 「9A」と入力 → 10進数 を選択 → 154 と表示されます。 FFは電卓を使用しなくても 255 という数値と判っている(当然電卓使用でも「255」となります)ので RGB値表示は前回のようになると思います。 ※ Windows VISTA の場合は手元にないのでわかりませんが、Windows XPだと すべてのプログラム → アクセサリー → 電卓 だったと思います。 そこで「関数電卓」を選べば16進数を10進数に変換・その逆もできたはずです。m(_ _)m

wfjzbjgtqxvmg
質問者

お礼

どうもありがとうございました。

wfjzbjgtqxvmg
質問者

補足

電卓を使ってやってみました! 仰ってるとおりになりました!感動です。 再度ご回答ありがとうございます。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

何度もごめんなさい。 >= &HFF9A05を=&H059AFFに変換するにはどうすればいいのでしょう に関する補足質問でしたね! 前回は16進数を単に10進数に変換するだけの方法でした。 VBAのコードでは16進数表示のRGB値はR・G・Bの順ではなく、逆になるという回答をNo.1でした通りです。 2桁ずつがR(レッド)・G(グリーン)・B(ブルー)の数値になりますので 質問にある順番を単純に B・G・R の順に並び替えただけです。 すなわち16進数表示の場合はRGB値は調べていません。 何度も失礼しました。m(_ _)m

wfjzbjgtqxvmg
質問者

お礼

どうもありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! Colorプロパティ値を16進表記する場合は RGB の順ではなく BGRの順になりますので >ctl.BackColor =&H059AFF としてみてください。 (確定すると&Hの次の「0」はなくなり &H59AFFになると思います) ※ RGB値を10進表示する場合は >ctl.BackColor =RGB(255,154,5) という感じになると思います。m(_ _)m

wfjzbjgtqxvmg
質問者

お礼

=&H059AFFにしたらうまくできました! しかし= &HFF9A05を=&H059AFFに変換するにはどうすればいいのでしょう? tom04様はどうやってこの値がわかったのですか? 「RGB の順ではなく BGRの順になります」がヒントだと思いますが、???です。

関連するQ&A