条件に応じてラベルの色を変えるVBA(色見本付き)
ユーザーフォームのラベルの色をセルの値によって変えたいって思いませんか?
セルの値が重複した時だけ赤色文字にして注意を促すように使えたら便利ですよね。
このように条件によってラベルの色を変えるとなると、プロパティでは固定化されるので対応できないので、VBAコードで対応させましょう。
ちなみに、ラベルの色を決めていて変える必要のない場合はプロパティで簡単に設定できますよ。
VBAコードでラベルの色を変える
ここでは、ユーザーフォームに配置したコマンドボタンを押すことにより、ラベルの色を変える方法をお話ししていきます。
VBAコードを使ってラベルの色を変える方法は、RGBで色指定するか、colorIndex番号で指定するかの2種類あり、どちらを使っても同じです。
主な色はこのページの最後に色見本をまとめましたので、活用してください。
ラベルの色を赤色に変える
数式も条件も何もない基本的な色変更なので、プロパティの設定と同じようになります。
これでユーザーフォーム1に配置したラベル1の文字色(ForeColor)が赤色に(RGBを使って)コマンドボタンを押すと変わります。
条件によりラベルの色を変える
では次に、条件に応じてラベルの色を変える方法ですが、ここでは1位(セルE3)と2位(セルE4)の点数が同点の場合(If~Then)にラベルの色を赤色で表示して目立つようにします。
もし~だったらで対応できますが、メッセージで同時に表示すると使うスタッフには親切ですよね。
2つの条件によりラベルの色を振り分けて変える
先ほどは2つのセルの値が同じ場合を例にしましたが、セルE3の値が80点以上の時にラベルの色を変えましょう。
ついでに、メッセージは「合格」にしてラベルの文字の色を青色にし、さらに(ElseIf)30点以下の場合「不合格」と表示してラベルの文字色を赤色にします。
当然ながら、RangeをCellsに変えても問題ありません。
ElseIfで2つ目の条件を付けて色分けも可能で、この方が実用的ですよね。
この条件でC3~C12まで順番に繰り返し色変更処理をする、より実践的な方法はマスターしたほうがいいですよ。
判定評価が2つでしたが、通知表みたいに5段階評価したいとなると、If~Thenでもできないことは無いですが、VBAコードがすごく長くなってしまうので、スッキリさせる条件分岐するSelect Caseステートメントを使いましょう。
ラベルの色は以下の色見本から自由に選んで使うことができますよ。
色見本(ColorIndex一覧)
ColorIndex | RGB | 16進数 | ColorIndex | RGB | 16進数 |
1 | RGB(0,0,0) | #000000 | 29 | RGB(128,0,128) | #800080 |
2 | RGB(255,255,255) | #ffffff | 30 | RGB(128,0,0) | #800000 |
3 | RGB(255,0,0) | #ff0000 | 31 | RGB(0,128,128) | #008000 |
4 | RGB(0,255,0) | #00ff00 | 32 | RGB(0,0,255) | #0000ff |
5 | RGB(0,0,255) | #0000ff | 33 | RGB(0,204,255) | #00ccff |
6 | RGB(255,255,0) | #ffff00 | 34 | RGB(204,255,255) | #ccffff |
7 | RGB(255,0,255) | #ff00ff | 35 | RGB(204,255,204) | #ccffcc |
8 | RGB(0,255,255) | #00ffff | 36 | RGB(255,255,153) | #ffff99 |
9 | RGB(128,0,0) | #800000 | 37 | RGB(153,204,255) | #99ccff |
10 | RGB(0,128,0) | #008000 | 38 | RGB(255,153,204) | #ff99cc |
11 | RGB(0,0,128) | #000080 | 39 | RGB(204,153,255) | #cc99ff |
12 | RGB(128,128,0) | #808000 | 40 | RGB(255,204,153) | #ffcc99 |
13 | RGB(128,0,128) | #800080 | 41 | RGB(51,102,255) | #3366ff |
14 | RGB(0,128,128) | #008080 | 42 | RGB(51,204,204) | #33cccc |
15 | RGB(192,192,192) | #c0c0c0 | 43 | RGB(153,204,0) | #99cc00 |
16 | RGB(128,128,128) | #808080 | 44 | RGB(255,204,0) | #ffcc00 |
17 | RGB(153,153,255) | #9999ff | 45 | RGB(255,153,0) | #ff9900 |
18 | RGB(153,51,102) | #993366 | 46 | RGB(255,102,0) | #ff6600 |
19 | RGB(255,255,204) | #ffffcc | 47 | RGB(102,102,153) | #666699 |
20 | RGB(204,255,255) | #ccffff | 48 | RGB(150,150,150) | #969696 |
21 | RGB(102,0,102) | #660000 | 49 | RGB(0,51,102) | #003366 |
22 | RGB(255,128,128) | #ff8080 | 50 | RGB(51,153,102) | #339966 |
23 | RGB(0,102,204) | #0066cc | 51 | RGB(0,51,0) | #003300 |
24 | RGB(204,204,255) | #ccccff | 52 | RGB(51,51,0) | #333300 |
25 | RGB(0,0,128) | #000080 | 53 | RGB(153,51,0) | #993300 |
26 | RGB(255,0,255) | #ff00ff | 54 | RGB(153,51,102) | #993366 |
27 | RGB(255,255,0) | #ffff00 | 55 | RGB(51,51,153) | #333399 |
28 | RGB(0,255,255) | #00ffff | 56 | RGB(51,51,51) | #333333 |
16進数はワードプレスプラグイン「TinyMCE Advanced」のテーブルに使用するコードから引用しています。
ユーザーフォームでオリジナルフォーム作ろう
エクセルの作業時間を短縮して効率よく作業を可能にする「ユーザーフォーム」を使いこなすには、基本を押さえておきましょう。
1日400人ぐらいの方が見ていただいている意外と人気ページなんです。
文字を入力するのに絶対使うTextBox
ユーザーフォームにテキストボックスを使わないで済むのは、確認画面ぐらいかな?
テキストボックスとセルをリンクさせる様々な方法を組み合わせれば、作業時間はあっという間に短縮できます。
文字列だけじゃない!Labelもクリックできるので可能性大
ラベルといえばテキストボックスの説明として文字列で表示させるのが、基本の使い方ですがクリックするとプログラムを実行させることもできるのです。
工夫次第でできることは無限大に広がります。
どんなVBAコードをコマンドボタンに記述しますか?
ボタンをクリックすると記述したプログラムが作動して、繰り返し作業や手間がかかったことが一瞬で完了させることができます。
あんなこともこんなこともできちゃいますよ。
ご覧いただきありがとうございます。
ブログランキングに登録しています。
少しでもお役に立てれば幸いで、参考になったようでしたら応援よろしくお願いします。
エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?