Excel VBA質問箱 IV

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

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


10603 / 13644 ツリー ←次へ | 前へ→

【7892】リストボックスの未選択について とん 03/9/22(月) 17:41 質問
【7893】Re:リストボックスの未選択について INA 03/9/22(月) 18:15 回答
【7896】Re:リストボックスの未選択について Jカーター 03/9/22(月) 18:36 回答
【7907】Re:リストボックスの未選択について とん 03/9/23(火) 10:47 質問
【7908】Re:リストボックスの未選択について INA 03/9/23(火) 11:02 回答
【7910】Re:リストボックスの未選択について とん 03/9/23(火) 13:38 お礼

【7892】リストボックスの未選択について
質問  とん  - 03/9/22(月) 17:41 -

引用なし
パスワード
   はじめて投稿させていただきます。
とんと申します。
どなたかご教授お願いします。

現在、ユーザフォーム上にリストボックスとコマンドボタンを作ってあります。
リストボックスで値を選択をして、その値を元にとある処理を行おうとしています。
ですので、コマンドボタンクリックのイベントにリストボックスの未選択チェックもしています。

未選択チェックのソース↓
If lst_box.ListIndex = -1 Then
  MsgBox ("選択してください")
  Exit Sub
End If

と書いているのですが、未選択でもメッセージが出ませんでした。
ブレークポイントで見てみると、0が返されているようです。
普通に-1が返されるものと思っていましたので、全然理由がわかりません。

みなさまぜひご教授ください。
お願いします。

【7893】Re:リストボックスの未選択について
回答  INA  - 03/9/22(月) 18:15 -

引用なし
パスワード
   >0が返されているようです。
リストの1件目が、空白でそれが選択されているようなことはありませんか?
未選択であれば、-1 となるはずです。

【7896】Re:リストボックスの未選択について
回答  Jカーター  - 03/9/22(月) 18:36 -

引用なし
パスワード
   こんにちは。
複数選択で使っているListBoxでしたら
Selectedプロパティを使ってループして調べる必要があるかもしれません。
的はずれでしたらすいません。

【7907】Re:リストボックスの未選択について
質問  とん  - 03/9/23(火) 10:47 -

引用なし
パスワード
   INAさん Jカーターさん

回答ありがとうございます!
お返事が遅くなってすみません。

>リストの1件目が、空白でそれが選択されているようなことはありませんか?
>未選択であれば、-1 となるはずです。

それが、リストは空白ナシにしています。

>複数選択で使っているListBoxでしたら

リストボックスは複数選択可にしていました。
ためしにMultiSelectを0にしてListIndexをみたらちゃんと-1になりました!!
複数選択リストボックスはListIndexが普通に使えないのですね・・・・。

>Selectedプロパティを使ってループして調べる必要があるかもしれません。

ためしに作ってみたのですが、こういうことでしょうか?

Dim list_count As Integer
Dim counter As Integer
'1=選択済み 0=未選択
Dim select_flag As Integer

list_count = lst_Bumon.ListCount
counter = 0
select_flag = 0

Do
  If lst_Bumon.Selected(counter) = True Then
    select_flag = 1
    Exit Do
  End If 
  counter = counter + 1
Loop While counter > lst_count

If select_flag = 0 Then
  MsgBox ("リストボックスから選択してください")
End If

これでリストボックス未選択の制御ができるつもりなのですが・・・。
まだVBAに不慣れなもので、よろしければまたご教授ください。

お願いします。

【7908】Re:リストボックスの未選択について
回答  INA  - 03/9/23(火) 11:02 -

引用なし
パスワード
   直書きなので間違っているかもしれませんが、こんな感じも有りかな?
for i= 0 to listbox1.listcount-1  
  IF listbox1.selected(i) = True then Exit sub
next i 
  msgbox "未選択"

【7910】Re:リストボックスの未選択について
お礼  とん  - 03/9/23(火) 13:38 -

引用なし
パスワード
   INAさん、お返事ありがとうございます!

さっき書いたLoop文、条件指定がまずくて無限になりました。
恥ずかしい・・・。

>for i= 0 to listbox1.listcount-1  
>  IF listbox1.selected(i) = True then Exit sub
>next i 
>  msgbox "未選択"

INAさんのソースはスッキリしていて、わかりやすくていいですね。
こちらを参考にさせていただきます!

みなさま、ありがとうございました!

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