[[20221001191922]] 『リストボックス内の選択状態(青色)を残したい』(フォーキー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リストボックス内の選択状態(青色)を残したい』(フォーキー)

お世話になります。
ユーザーフォームにリストボックスが二つあります。
それぞれEnterイベントとExitイベントで背景色が変わるように設定しています。

以下コードです

 Option Explicit
 Private Sub ListBox1_Enter()
     Me.ListBox1.BackColor = RGB(255, 255, 0)
 End Sub

 Private Sub ListBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     Me.ListBox1.BackColor = RGB(255, 255, 255)
 End Sub
 Private Sub ListBox2_Enter()
     Me.ListBox2.BackColor = RGB(255, 255, 0)
 End Sub

 Private Sub ListBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     Me.ListBox2.BackColor = RGB(255, 255, 255)
 End Sub
 Private Sub UserForm_Initialize()
     With Me
         .ListBox1.AddItem "あ"
         .ListBox1.AddItem "い"
         .ListBox2.AddItem "う"
         .ListBox2.AddItem "え"
     End With
     Me.ListBox1.ListIndex = 0
     Me.ListBox1.SetFocus
 End Sub

このとき、例えばリストボックス1の「あ」を選択した状態でリストボックス2に移動すると、青色の選択状態が解除されます。
Exitイベント内のコードをコメントアウトすると青色選択は残るので、どうも背景色を変えるのがだめみたいです。

ListIndexプロパティを見ると、青色や点線がないだけで選択はされているんですが、青色にならないです。

背景色を変更した後も青色を残す方法はないでしょうか。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 BackColorを変更したあと、選択しなおす

 Private Sub ListBox1_Enter()
     Me.ListBox1.BackColor = RGB(255, 255, 0)
     i = Me.ListBox1.ListIndex
     Me.ListBox1.ListIndex = -1
     Me.ListBox1.ListIndex = i
 End Sub
 Private Sub ListBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     Me.ListBox1.BackColor = RGB(255, 255, 255)
     i = Me.ListBox1.ListIndex
     Me.ListBox1.ListIndex = -1
     Me.ListBox1.ListIndex = i
 End Sub
(´・ω・`) 2022/10/01(土) 20:11

 > Me.ListBox1.ListIndex = -1
なるほど、一度解除しなきゃいけないんですね。
ありがとうございます。できました。
(フォーキー) 2022/10/01(土) 20:26

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.