• ベストアンサー

EXCEL VBAのユーザーフォームの配色について

EXCEL VBAのユーザーフォームの配色の変更について教えていただきたいことがあります。 ユーザーフォームを設置しているのですが、プロパティで設定されている「システム」及び「パレット」の各色をVBAコードで表示することは出来るのでしょうか。 プロパティでUserForm1のBackColorを「強調表示」に設定 TextBox1の値を変えたときにTextBox1のBackColorを「強調表示」に変更する。 Private Sub TextBox1_Change() TextBox1.BackColor = RGB(255, 255, 150) End Sub でやろうとしていますが、全く同じ色を作ることができません。 システムやパレットの色をRGB以外のやり方で設定することはできるのでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

システムの色(&h80000000以上の色)は、アプリケーションの色を統一化するための色です。 なので、他のWindowsマシンでの「強調表示色」は、あなたの「強調表示色」と違うかもしれません。 試しにTextBoxをいくつか作ってシステムの色とパレットの色でbackcolorを指定してください。 そして「コントロールパネル」の「画面」で「デザイン」の「配色」を変更してみてください。 パレットで指定した物は色が変わらず、システムの色で指定した物は色が変わると思います。 例えば「強調表示」の場合vbaでは、&h8000000Dまたは、vbHighlightで指定します。 「vb システムカラー」で検索すると、「vbHighlight」とかの記述は調べられると思います。 もちろんRGBでも表現できます。 私の強調色はrgb(0,0,128)=&h800000です。 画面をキャプチャしてペイント系のソフト(PaintShopPro)で調べました。 どちらを指定するかは好みだとは思います。 ただ、アプリケーションの一部だけをRGBで指定してると、他のPCで実行すると配色のセンスを疑われる場合が・・・

takohasisa
質問者

お礼

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

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

微妙に異なることを羅列してあるので、何を聞きたいのかわかりません >「システム」及び「パレット」の各色をVBAコードで表示することは出来るのでしょうか。 >全く同じ色を作ることができません >システムやパレットの色をRGB以外のやり方で設定することはできるのでしょうか エクセルではカラーパレットに割り当てた色しか表示できません。 RGBで色を指定することは可能ですが「パレットに登録されている近似した色」に置き換わってしまいます。 ですから「自分が出したい色」をユーザフォームにも出したいなら、パレットの1つにその色を登録しておかなければなりません。 VBAなら  ActiveWorkbook.Colors(n) = RGB(255, 255, 150)  (nは1~56) VBAを使わないならワークシート画面で「ツール」→「オプション」→「色」で設定ができます。 意味が違っていたらごめんなさい

takohasisa
質問者

お礼

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

関連するQ&A

  • エクセルVBA ユーザーフォームの色

    エクセル2002使用です。 ユーザーフォームの背景色の既定のプロパティーは backcolor:&H8000000F&(ボタンの表面)になっていると思うのですが、このRGB値を教えていただきたいのですが・・・ ペイントソフトで、ユーザーフォームを同じ背景色を作りたいのです。ペイントソフトには色合い・鮮やかさ・明るさの設定もありますが分かれば一緒に教えていただきたいです。 RGB値 赤・緑・青 色合い・鮮やかさ・明るさ よろしくお願いします。

  • エクセルのユーザーフォームの色 #FF6699

    エクセルのユーザーフォームの色は、パレットで選べる色しか設定できないですか? #FF6699の色を設定したいのですが、「プロパティの値が不正です」となってしまいます。 「パレット」と「システム」しかなく、「他の色を選択する」みたいな事はできないのでしょうか?

  • VBAユーザーフォームの色が反映しない

    またぞろVBAよろしくお願いします。 今回はユーザーフォームを作りマクロを走らせている間『処理中』の表示をさせるようにしています。 そこでユーザーフォームのBackColorをパレットより選んで黄色とかにしているのですが、いざマクロ実行してみると色はグレー色のままだし、ラベルも反映していないのでコメントも出ないフォームが画面上に出ます。 でも、Captionでのコメントは反映して切り替わっています、フォーム自体の大きさも変更すると反映しています。 同じエクセルブックにもう一つユーザーフォームはつけていますがそちらはバッチリとデザインしたフォームで表示されます。 このフォームとの相違点はマクロ実行させる時に表示させているシートが違うぐらいなのですが、そういたっものも関係あるんですかね? 何処を修正したらよいのか、何故今回は反映してくれないのかホトホト困っておりますのでなにかアドバイスあればお願いします。

  • VBA:ユーザーフォームのマルチページに色を付けたい。

    ユーザーフォームのマルチページに色を付けたいのですが思うようにいきません。 プロパティでbackcolorの設定をするとタブの右側が変わるだけです。 良い方法はないでしょうか。

  • VBAでユーザーフォームのcaption表示

    VBAを初めたばかりです。 VBAでユーザーフォームを作成したのですが ユーザーフォームプロパティのcaptionで入力しても 下記プログラムで入力しても表示されません。 VBA作成時の画面にはしっかりと「項目」と 表示されていますが、プログラムを実行してユーザーフォームを 呼び出すと何も表示されていません。 ご教授ください。 Private Sub UserForm_Initialize() UserForm1.Caption = "項目" With ListBox1 .AddItem "1" .AddItem "2" End With End Sub

  • ExcelのVBAでフォームが表示されない

    Sub フォーム起動() UserForm1.Show End Sub 上記の内容をModule1にしてショートカットキーをを設定し、いつでも他に作ってあるユーザーフォームが起動するようにしていました。しかし先日、久しぶりに使ってみようと、設定したショートカットキーを押したら、VBAもマクロも全くいじっていないにも関わらず、「UserForm1.Show」の部分で「実行時エラー'380': Valueプロパティを設定できません。プロパティの値が無効です。」とエラーが表示されフォームが起動できません。これはいったい何が原因なのでしょうか。

  • EXCEL VBA ユーザフォームで複数のコントロールを作るとき

    VBAにてシステムを作っています。当該システムの性格上、ユーザフォーム上のコントロールが多量にあります(テキストボックスが30個ぐらい) このように複数のコントロールを作成する場合、オブジェクト名を textbox1,textbox2というように自動で連番を振ってくれるのですが、都合上textboxというオブジェクト名を使えなくなってしまいました。 目的としては txt1,txt2というように任意のオブジェクト名で自動的に連番を振ってほしいのですが、そのような機能はVBEにありますでしょうか?もしくはそういったアドインがあれば教えていただきたいです。いちいち30個もあるコントロールのプロパティをあけて名前を変えるというような非効率的なものは避けたいので・・・。

  • エクセルVBA ユーザーフォームのtextboxの書式設定って?

    エクセルでユーザーフォームを作成しています。 金額を入力するTextBoxを作ったのですが、 その表示方法を「,」(カンマ)で桁区切り で表示さいたいのですが、方法ってありますか? TextBoxプロパティーを色々見ているのですが、 セルの書式設定みたいなものは無さそうなのですが、 方法があれば、教えていただきたく思います。 宜しくお願いいたします。

  • VBA(エクセル)のユーザーフォームの固定

    VBAのユーザーフォームを初めに表示した位置から、動かせないようにするためにはどうしたらよいでしょうか。Moveableのプロパティもないようです。よろしくお願いします。

  • エクセル VBA ユーザーフォームで検索したいのですが

    つい昨日触り始めた大初心者です。。 エクセルシートにて 数値を記した列と、詳細を記した列があります。 ユーザーフォームにて textboxに数値を入力し、ボタンをクリックすると 検索をして、ユーザーフォーム内のlabelに詳細が表示される、といったvbaを書いているのですが、どうにもうまくいきません。 また、textboxに検索範囲にない数値が入力されたときには Labelに「なし」と表示させたいのですが、 エラーが出てしまい、その処理もやはりうまく出来ません。 どなたかご教授いただけますでしょうか。

専門家に質問してみよう