電子書籍ギフト♪ 最大10,000円が当たる!

VBAのフォーム上で、複数選択ができるListBox1を作っています。
ListBox1を選択する度に、ListBox2へListBox1の選択内容で
絞り込んだListBox2のリストを作るという処理をしたいのですが、
ListBox1_ClickイベントでListBox1のリストクリック時に
何も反応がありません。
.MultiSelect = fmMultiSelectSingle
で指定した複数リストボックスはClickイベントが拾えないのでしょうか?
ListBox1リスト内のデータ選択・解除の度にイベントが
発生するようにしたいです。
宜しくお願いします。

教えて!goo グレード

A 回答 (8件)

>Changeでも無理でした。


そーですか
イベント発生確認のためのサンプルを作ってみましたので試してみてください

準備
新しいブックを作成する
userformを作成し
listbox を1つ
label を1つ
textbox を1つ
commandbutton を2つ
これをuserform上に作成してください
配置、大きさは適当でよいです
次のコードすべてをuserformモジュールへコピペしてください
後は、作成したuserformを表示してください

Private Sub UserForm_Initialize()
If Range("a1").Value = "" Then ActiveSheet.Range("a1:a10").Formula = "=row(a1)*7"
ListBox1.RowSource = "a1:a10"
ListBox1.MultiSelect = fmMultiSelectSingle
Label1.Caption = "Singl"
CommandButton1.Caption = "Singl"
CommandButton2.Caption = "Multi"
End Sub
Private Sub CommandButton1_Click()
ListBox1.MultiSelect = fmMultiSelectSingle
Label1.Caption = "Singl"
End Sub
Private Sub CommandButton2_Click()
ListBox1.MultiSelect = fmMultiSelectMulti
Label1.Caption = "Multi"
End Sub
Private Sub ListBox1_Click()
MsgBox "クリックイベント発生"
TextBox1.Value = ListBox1.Value
End Sub
Private Sub ListBox1_Change()
If Label1.Caption = "Singl" Then Exit Sub
MsgBox "チェンジイベント発生"
'知りたいのは、これのような気がします↓↓
TextBox1.Value = ListBox1.List(ListBox1.ListIndex)
End Sub

サンプルのデータは表示されているシートに勝手に作成します
commandbuttonでsinglselectかmaltiselectの選択が出来ます
labelには現在の設定が表示されます
textboxにlistboxで選択した値が表示されます

多分、これで解決するのではと思いますが
私の見当違いでしたら無視してください
    • good
    • 2
この回答へのお礼

お手数かけまして、すいません。
無事、Changeで拾えるようになりました。
ありがとうございました!!(^ ^

お礼日時:2010/02/04 16:33

マルチセレクトで、listboxの値を拾うのは、


以下のような感じで、拾えました。

Private Sub ListBox1_Change()

Dim i As Integer

For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i) Then

Debug.Print ListBox1.List(i)

End If

Next

End Sub
    • good
    • 1
この回答へのお礼

すいません、ありがとうございました!
おっしゃる通り、Changeで拾えるようになりました!!

お礼日時:2010/02/04 16:32

なるほど、



シングルセレクトしか、確認していませんでした。
複数選択にすると、clickイベントは、
何も出ませんね。

changeイベントだと、nullを返すので、
質問者さんの、反応無しは、不思議ですね。


myRangeさん、ありがとうございました。
    • good
    • 0

余計なことかも知れませんが、回答4のtom11さんへ。



質問者のListBox1では、Clickイベントは発生しないと思いますよ。

以上です。
    • good
    • 0

>やはり、ListBox1_Clickではイベントが発生しないようです



まさかと思いますが。異様に器用なことをしていません。

まさか、標準モジュールにイベント書いていないですよね。

イベントは、フォームに貼り付けた、
リストボックスをダブルクリックして、
コードを書くところを出しますが。

私の勘違いなら、ごめん!!
    • good
    • 0

お急ぎのようですので、横から失礼して。

。。

>Changeでも無理でした。。

これは2通りの意味に取れます。
  1.Changeイベントの発生が確認できなかった
  2。Changeイベントでのコードがうまく動作しなかった
 
Changeイベントは発生するので、2の意味だろうと推測します。
なら、Changeイベントのコードを提示した方がいいでしょう。

以上です。
    • good
    • 0

listbox1に、値をセットして、以下のイベントを


書いて、ユーザーフォームを表示し、クリックすると
イミディエイトウィンドに、値が出ますよ。

Private Sub ListBox1_Click()

Debug.Print UserForm1.ListBox1.Value


End Sub

>複数選択ができるListBox1

これを書いて、

>MultiSelect = fmMultiSelectSingle

一体、、何がしたいのですか、??
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
記述を間違えました。すいません。
MultiSelect = fmMultiSelectMulti
です。
やはり、ListBox1_Clickではイベントが発生しないようです。

お礼日時:2010/02/03 09:07

ListBox1_Changeイベントを使用してみては

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Changeでも無理でした。。

お礼日時:2010/02/03 09:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング