こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ListBoxのBackColor変更

EXCEL2007のVBAにて質問です。

ユーザーフォームにリストボックスを配置して、選んだ物によって
リストボックスの背景色を変更しようとしているのですが、うまくいきません。

例えばlistbox1を以下の様にセットし、
Private Sub UserForm_Initialize()
UserForm1.ListBox1.AddItem ("ピンク")
UserForm1.ListBox1.AddItem ("白")
End Sub

下記の通り選んだ項目で背景色を変えたいのですが、
Private Sub ListBox1_Click() '選んだ項目で色変え
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

クリックして項目を選択しても背景の色が変わりません。
何か見落としている事があるでしょうか?
又はやり方が悪いのでしょうか?
お教え頂けると助かります。

以上、宜しくお願い申し上げます。

投稿日時 - 2012-04-12 16:03:01

QNo.7417263

困ってます

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

>ちなみに、ユーザーフォームのイニシャライズの時に、
>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

投稿日時 - 2012-04-12 17:21:10

お礼

kybo様
迅速な回答ありがとうございます。

ListBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
で出来ました!しかし何ででしょうかね?
ClickとかChangeでも変えさせてもらえるとやりやすいんですけどね(^^;

とりあえず目的は果たせたので、アドバイス頂いたやり方で対処致します。

どうもありがとうございました。

投稿日時 - 2012-04-12 17:41:58

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

VBAのヘルプには、

~~~~~~~~~~~~
オブジェクトの背景色は、BackStyle プロパティが定数 fmBackStyleOpaque に設定されている場合に限り表示されます。
~~~~~~~~~~~~

とあります。
ListBoxには、BackStyle プロパティがないので、デザイン時にしか色を変更出来ないと思われます。

ちなみに、
ComboBoxだとできるようです。

投稿日時 - 2012-04-12 16:28:39

お礼

kybo様
早速のご回答ありがとうございます。
大変助かります。

>ListBoxには、BackStyle プロパティがないので、デザイン時にしか色を変更出来ないと思われます。
まったく気付きませんでした。仕様上、背景色はデザイン時にしか変更できないのですね。
なるほど、いくらやっても変わらない筈です・・・。

ちなみに、ユーザーフォームのイニシャライズの時に、
UserForm1.ListBox1.BackColor = RGB(255, 128, 128)
としてやると背景色はピンクになるのですが、これはデザイン時と同じだからでしょうか?
度々で申し訳ありませんが、もし解りましたら教えて下さい。

以上、宜しくお願い致します。

投稿日時 - 2012-04-12 17:07:20

あなたにオススメの質問