[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コンボボックスをドロップダウンさせたままにする』(ホイジンガ)
おはようございます。
スピンボタンでコンボボックスのカーソル行を上下させているのですが、スピンボタンでカーソルを上下させて いる間はコンボボックスをドロップダウンしたままにしたいのです。
ユーザーフォームの他の部分にマウスカーソルが乗るとコンボボックスのドロップダウンを閉じたいです。これは出来ています。
下記のコードでは、スピンボタンを一度押すとカーソル行が一行上下に動きドロップダウンは開いたままになりますが、そのまま もう一度押すとカーソル行が一行上下に動きますが、ドロップダウンは閉じてしまいます。 続けて押忍と、カーソル行が一行上下に動きドロップダウンも開きます。 この動きの繰り返しになります。
スピンボタンをクリックでコンボボックスのカーソルを上下させている間はコンボボックスをドロップダウンさせたままにするには どうすればいいでしょうか?ご教示お願いいたします。
Private Sub ComboBox1_Click() If Me.ComboBox1.ListCount = 0 Or Me.ComboBox1.ListIndex = -1 Then Exit Sub Call cb1dd End Sub
'コンボボックス上でマウスが動くとコンボボックスをドロップダウン Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Call cb1dd End Sub
'コンボボックスをドロップダウン Private Function cb1dd() If Me.ComboBox1.ListCount = 0 Then Exit Function Me.ComboBox1.SetFocus Me.ComboBox1.DropDown End Function
'コマンドボタン Private Sub CommandButton1_Click() MsgBox "実行" End Sub
'スピンボタンでコンボボックスのカーソルを一行下げる Private Sub SpinButton1_SpinDown() If Me.ComboBox1.ListIndex = Me.ComboBox1.ListCount - 1 Then Me.ComboBox1.ListIndex = 0 Else Me.ComboBox1.ListIndex = Me.ComboBox1.ListIndex + 1 End If Call cb1dd End Sub
'スピンボタンでコンボボックスのカーソルを一行上げる Private Sub SpinButton1_SpinUp() If Me.ComboBox1.ListIndex = 0 Then Me.ComboBox1.ListIndex = Me.ComboBox1.ListCount - 1 Else Me.ComboBox1.ListIndex = Me.ComboBox1.ListIndex - 1 End If Call cb1dd End Sub
'ユーザーフォーム起動時/コンボボックスセット Private Sub UserForm_Initialize() Me.ComboBox1.AddItem "aa" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "aaaa" Me.ComboBox1.AddItem "bb" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "bbbb" Me.ComboBox1.AddItem "cc" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "cccc" Me.ComboBox1.AddItem "dd" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "dddd" Me.ComboBox1.AddItem "ee" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "eeee" Me.ComboBox1.ListIndex = 0 End Sub
'ユーザーフォーム上でマウスが動くとコマンドボタンにフォーカス(コンボボックスのドロップダウンを閉じる) Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Me.CommandButton1.SetFocus End Sub
< 使用 Excel:Excel2007、使用 OS:WindowsVista >
cb1ddの実行させる位置を変えてみては いかがですか?
Option Explicit
Private Sub ComboBox1_Click() If Me.ComboBox1.ListCount = 0 Or Me.ComboBox1.ListIndex = -1 Then Exit Sub Call cb1dd End Sub 'コンボボックス上でマウスが動くとコンボボックスをドロップダウン Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Call cb1dd End Sub 'コンボボックスをドロップダウン Private Function cb1dd() If Me.ComboBox1.ListCount = 0 Then Exit Function ' Me.ComboBox1.SetFocus これ要らない Me.ComboBox1.dropdown End Function 'コマンドボタン Private Sub CommandButton1_Click() MsgBox "実行" End Sub 'スピンボタンでコンボボックスのカーソルを一行下げる Private Sub SpinButton1_SpinDown() Call cb1dd
If Me.ComboBox1.ListIndex = Me.ComboBox1.ListCount - 1 Then Me.ComboBox1.ListIndex = 0 Else Me.ComboBox1.ListIndex = Me.ComboBox1.ListIndex + 1 End If End Sub 'スピンボタンでコンボボックスのカーソルを一行上げる Private Sub SpinButton1_SpinUp() Call cb1dd
If Me.ComboBox1.ListIndex = 0 Then Me.ComboBox1.ListIndex = Me.ComboBox1.ListCount - 1 Else Me.ComboBox1.ListIndex = Me.ComboBox1.ListIndex - 1 End If End Sub 'ユーザーフォーム起動時/コンボボックスセット Private Sub UserForm_Initialize() Me.ComboBox1.AddItem "aa" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "aaaa" Me.ComboBox1.AddItem "bb" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "bbbb" Me.ComboBox1.AddItem "cc" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "cccc" Me.ComboBox1.AddItem "dd" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "dddd" Me.ComboBox1.AddItem "ee" Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = "eeee" Me.ComboBox1.ListIndex = 0 ComboBox1.ShowDropButtonWhen = fmShowDropButtonWhenNever 'Combobox1の操作にSpinbuttonを使うのですから 二つも要らないとコード見て思いました End Sub 'ユーザーフォーム上でマウスが動くとコマンドボタンにフォーカス(コンボボックスのドロップダウンを閉じる) Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Me.CommandButton1.SetFocus End Sub
(ichinose) 2015/07/03(金) 08:00
ichinoseさん、ご回答ありがとうございます。
ご教示いただきましたコードでおおむねうまくいきました。 ただ、↓のコードがうまく作動しなくなりました。 ユーザーフォーム上でマウスを動かしてもコンボボックスのドロップダウンが閉じなくなりました。
'ユーザーフォーム上でマウスが動くとコマンドボタンにフォーカス(コンボボックスのドロップダウンを閉じる) Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Me.CommandButton1.SetFocus End Sub
そこで
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Me.ComboBox1.SetFocus Me.CommandButton1.SetFocus End Sub
と Me.ComboBox1.SetFocus を付加することによりうまくいきました。 ありがとうございました。 (ホイジンガ) 2015/07/03(金) 08:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.