- ベストアンサー
条件に応じてコンボボックスの背景色を変えたいです
4つのコンボボックスA,B,C,Dがあり A+B=C+D の時、4つのコンボボックスの背景色を変更したいです。 ただしA,Bの両方に何も入力されてない時は色は変更したくないです。 振替管理表というものを作っているのですが、休日出勤した日(A、B)と、振替に休んだ日(C,D)を監理したいです。 休出した日を振替消化した場合にコンボボックスの色を変更して、消化できたことがわかりやすくしたいです。 コンボボックスの値(振替の単位)は1(1日)と0.5(半日)があり、0.5が2つある時には1日として消化したいです。 VBAは修正した事はあるのですが、新規に作るということをした経験がなく困っています。 簡単なサンプルコードが欲しいですが、 参考になるページを紹介していただくだけでも良いのでよろしくお願いしますm(_ _)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ コンボボックスなんですよね。 オートフィルタではないんですよね。 管理表と仰るので、なぜ、わざわざコンボボックスにしているのか疑問に思いました。 Visual Basic Editor は開けるものとしまして 左欄の該当シート(コンボボックスのあるシート)を選択します。 ツールバーの下にWorkSheetと書かれているところをクリックすると ComboBox1とか出てきますので選択します。 すぐ下の欄が Private Sub ComboBox1_Change() End Sub となりますので、 Private Sub ComboBox1_Change() Call Module1.コンボ色々 End Sub とします。 次に[挿入]-[標準モジュール]を選択すると 先ほど書いていた欄が真っ白になります。 ココに Sub コンボ色々() If ActiveSheet.ComboBox1.Value > 0 Then 'コンボボックスの値が0より大きかったら ActiveSheet.ComboBox1.BackColor = RGB(255, 0, 0) '赤にします Else ActiveSheet.ComboBox1.BackColor = RGB(255, 255, 255) '白にします End If End Sub といれます。 あとはアレンジしてください
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
コンボボックスは諸項目から選んで、ひとつまたは複数項目を入力するための、ウインドウズ上のツール(コントロール)です。 これがなぜ休日振り替え管理に使えるのか判りません。 コンボボックスのどういう特性に注目して、利用しようとしているのでしょうか。 仮の実例でも挙げて説明してください。 初心者は、思いつきで変な使い方を考えて、プログラムの難しい質問にしていることが、最近の質問で時々あるのを感じる。
- mshr1962
- ベストアンサー率39% (7417/18945)
A=1,B=0,C=1,C=0 A=1,B=0,C=0.5,D=0.5 A=0.5,B=0.5,C=1,D=0 A=0.5,B=0,C=0.5,D=0 の組み合わせということで If A + B > 0 And A + B = C + D Then A.BackColor = 変更色 B.BackColor = 変更色 C.BackColor = 変更色 D.BackColor = 変更色 Else A.BackColor = 既定色 B.BackColor = 既定色 C.BackColor = 既定色 D.BackColor = 既定色 End if とすればいいのでは?
補足
振替の値は「1と0.5と入力なし」ですのでコンボボックスを 使って入力値を制限しようと考えています。 普通のセルならなんでも入力できるのでコンボボックスを 使うのが適当かと思いました。文字列とか他の数値を入れると 合計するときに計算できません。 50名程度の振替を1年監理したいと思っています。