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

EXCEL VBAのユーザーフォームの配色の変更について教えていただきたいことがあります。
ユーザーフォームを設置しているのですが、プロパティで設定されている「システム」及び「パレット」の各色をVBAコードで表示することは出来るのでしょうか。

プロパティでUserForm1のBackColorを「強調表示」に設定
TextBox1の値を変えたときにTextBox1のBackColorを「強調表示」に変更する。

Private Sub TextBox1_Change()
TextBox1.BackColor = RGB(255, 255, 150)
End Sub

でやろうとしていますが、全く同じ色を作ることができません。
システムやパレットの色をRGB以外のやり方で設定することはできるのでしょうか。
よろしくお願いいたします。

A 回答 (2件)

システムの色(&h80000000以上の色)は、アプリケーションの色を統一化するための色です。


なので、他のWindowsマシンでの「強調表示色」は、あなたの「強調表示色」と違うかもしれません。
試しにTextBoxをいくつか作ってシステムの色とパレットの色でbackcolorを指定してください。
そして「コントロールパネル」の「画面」で「デザイン」の「配色」を変更してみてください。
パレットで指定した物は色が変わらず、システムの色で指定した物は色が変わると思います。

例えば「強調表示」の場合vbaでは、&h8000000Dまたは、vbHighlightで指定します。
「vb システムカラー」で検索すると、「vbHighlight」とかの記述は調べられると思います。
もちろんRGBでも表現できます。
私の強調色はrgb(0,0,128)=&h800000です。
画面をキャプチャしてペイント系のソフト(PaintShopPro)で調べました。

どちらを指定するかは好みだとは思います。
ただ、アプリケーションの一部だけをRGBで指定してると、他のPCで実行すると配色のセンスを疑われる場合が・・・
    • good
    • 0
この回答へのお礼

ありがとうございました!解決しました!
VBのシステムカラーの定数というのがあるんですね。
初めて知りました。
また分からないことがありましたらよろしくお願いいたします。

お礼日時:2008/03/23 08:24

微妙に異なることを羅列してあるので、何を聞きたいのかわかりません



>「システム」及び「パレット」の各色をVBAコードで表示することは出来るのでしょうか。
>全く同じ色を作ることができません
>システムやパレットの色をRGB以外のやり方で設定することはできるのでしょうか

エクセルではカラーパレットに割り当てた色しか表示できません。
RGBで色を指定することは可能ですが「パレットに登録されている近似した色」に置き換わってしまいます。

ですから「自分が出したい色」をユーザフォームにも出したいなら、パレットの1つにその色を登録しておかなければなりません。
VBAなら
 ActiveWorkbook.Colors(n) = RGB(255, 255, 150)
 (nは1~56)

VBAを使わないならワークシート画面で「ツール」→「オプション」→「色」で設定ができます。
意味が違っていたらごめんなさい
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ちょっと質問が分かりにくかったかも知れません。
ユーザーフォームのプロパティの「パレット」と「システム」には
デフォルトで様々な色が登録されていますが
これらの色をVBAコードで選択できることが出来るかどうかという質問です。
TextBox1.BackColor = QBColor()だと選べない色がデフォルトで登録されていると思うのですが。

お礼日時:2008/03/22 18:48

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