Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


24350 / 76732 ←次へ | 前へ→

【57731】Re:コンボボックスについて
発言  kanabun  - 08/9/10(水) 23:43 -

引用なし
パスワード
   ▼タンゴ さん:
こんばんは。おじゃまします。

> 再び25をクリックしても反応してくれません。
> 原因はすでにコンボボックスの行表示が25になっているからだと思うのですが・・・
> 同じ所を続けてクリックは受けつけないという仕様なのでしょうか?

すでに、neptune さんからコメントがありますが、
同じアイテムを再度クリックしても、Clickイベント または Changeイベント
は発生しないようになってるらしいです。

同じアイテムを連続して選択して、Clickイベントが発生するようにするには
リストボックスを使い、ButtonUpイベントで ListIndexを -1 にしておくという
方法がある(ListBoxのばあい、 ListIndexを -1 にしても、選択は解除され
るけれど、どのアイテムを選択したかは リストの選択項目に 枠線が表示され
続けるのでわかる)のですけれど、
ComboBoxですと、ListIndexを -1 にすると、同時にテキスト部の表示が空白
になってしまってうまくないです。

どうしても、連続して同じ項目をクリックできるようにするには、
ComboBoxの _DropButtonClickイベントがリストを表示するために▼をクリック
したときと、選択してリストを閉じるときの2回発生することを利用すると、
ListBoxでの同じアイテムの連続選択と似たような動作を再現できます。


Private Sub ComboBox1_Change()
 If ComboBox1.ListIndex > -1 Then
   '◆ 処理
   MsgBox ComboBox1.Value
 End If
End Sub

'◆_DropButtonClick は ListBoxへの<入>時<出>時、計2回発生する
Private Sub ComboBox1_DropButtonClick()
 Static flag As Boolean, PrevIndex As Long
 If flag Then '<出>のときCheck
   With ComboBox1
     If .ListIndex > -1 Then
       If .ListIndex = PrevIndex Then
         .ListIndex = -1
         .ListIndex = PrevIndex
       End If
     End If
     PrevIndex = .ListIndex
   End With
 End If
 flag = Not flag
End Sub

(注)ただし、ドロップダウンを押してリストを出したが、
   選択を中止して、(なにも選択せずに)テキスト部をクリックした
   ときにも、DropDownClickイベントは発生してしまいますので、
   実用的な方法ではないかもしれません。
  
1 hits

【57729】コンボボックスについて タンゴ 08/9/10(水) 22:17 質問
【57730】Re:コンボボックスについて neptune 08/9/10(水) 22:34 発言
【57731】Re:コンボボックスについて kanabun 08/9/10(水) 23:43 発言
【57733】Re:コンボボックスについて タンゴ 08/9/11(木) 0:55 お礼

24350 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free