- ベストアンサー
ListBoxのBackColor変更方法がうまくいかない
- EXCEL2007のVBAを使用して、リストボックスの背景色を選択された項目に応じて変更しようとしていますが、正常に動作していません。
- リストボックスの項目をクリックしても背景色が変わらない原因について、見落としている可能性や誤った手順があるかどうかを確認しています。
- 質問者は、リストボックスの項目に基づいて背景色を変更する方法が正しいかどうかについてアドバイスを求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>ちなみに、ユーザーフォームのイニシャライズの時に、 >UserForm1.ListBox1.BackColor = RGB(255, 128, 128) >としてやると背景色はピンクになるのですが、これはデザイン時と同じだからでしょうか? 私もそれ気になってました。 BeforeUpdate、AfterUpdate、DblClick とかに記述すれば出来ますね。 ClickとChangeはダメ見たいです。 Private Sub ListBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If UserForm1.ListBox1.ListIndex = 0 Then UserForm1.ListBox1.BackColor = RGB(255, 128, 128) 'ピンクなら背景をピンクに Else UserForm1.ListBox1.BackColor = RGB(255, 255, 255) '白なら背景を白に End If End Sub
その他の回答 (1)
- kybo
- ベストアンサー率53% (349/647)
VBAのヘルプには、 ~~~~~~~~~~~~ オブジェクトの背景色は、BackStyle プロパティが定数 fmBackStyleOpaque に設定されている場合に限り表示されます。 ~~~~~~~~~~~~ とあります。 ListBoxには、BackStyle プロパティがないので、デザイン時にしか色を変更出来ないと思われます。 ちなみに、 ComboBoxだとできるようです。
お礼
kybo様 早速のご回答ありがとうございます。 大変助かります。 >ListBoxには、BackStyle プロパティがないので、デザイン時にしか色を変更出来ないと思われます。 まったく気付きませんでした。仕様上、背景色はデザイン時にしか変更できないのですね。 なるほど、いくらやっても変わらない筈です・・・。 ちなみに、ユーザーフォームのイニシャライズの時に、 UserForm1.ListBox1.BackColor = RGB(255, 128, 128) としてやると背景色はピンクになるのですが、これはデザイン時と同じだからでしょうか? 度々で申し訳ありませんが、もし解りましたら教えて下さい。 以上、宜しくお願い致します。
お礼
kybo様 迅速な回答ありがとうございます。 ListBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) で出来ました!しかし何ででしょうかね? ClickとかChangeでも変えさせてもらえるとやりやすいんですけどね(^^; とりあえず目的は果たせたので、アドバイス頂いたやり方で対処致します。 どうもありがとうございました。