[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/07/07(Fri) 13:08
投稿者名:ゆうすけ
Eメール:
URL :
タイトル:
リストボックスから選択されている項目の行を取得したい
こんにちわ VB初心者です 
リストボックスからいくつかの項目があるとして
それらの一つを選択した時にその項目が何行目にあるかをメッセージで出したいのですがどうすれば
よいでし
ょう?今作ってみたプログラムですが、むちゃくちゃっぽいです。
よろしくおねがいします。

Private Sub Command1_Click()
Dim I As Integer
For I = 0 To List1.ListCount - 1
    
     If List1.Selected(I) = ture Then
        MsgBox I & "行目が選択されてます"
     Else
        List1.Selected(I) = False
        MsgBox "選択されてません"
     End If          
Next I
End Sub

投稿時間:2006/07/07(Fri) 13:30
投稿者名:
Eメール:
URL :
タイトル:
Re: リストボックスから選択されている項目の行を取得したい
> こんにちわ VB初心者です 
> リストボックスからいくつかの項目があるとして
> それらの一つを選択した時にその項目が何行目にあるかをメッセージで出したいのですがどうすれ

> よいでし
> ょう?今作ってみたプログラムですが、むちゃくちゃっぽいです。
> よろしくおねがいします。
リストボックスの選択モードには数種類あります。
単一選択の場合は、ListIndexプロパティがその選択されているリストのインデックスを返します。
複数選択の場合は、ゆうすけさんが既に行っていらっしゃるような、リストすべてを走査する方法がも
っとも手っ取り早いです。
もしWindowsAPIを使おうと思っているのなら、LB_GETSELITEMS メッセージを調査するのもいいかもしれ
ません。

投稿時間:2006/07/07(Fri) 17:19
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re: リストボックスから選択されている項目の行を取得したい
ListIndexは0から始まるので、+1する必要があります。

Private Sub Command1_Click()
    Dim i As Integer
    
    If List1.SelCount = 0 Then
        MsgBox "選択されてません"
    Else
        For i = 0 To List1.ListCount - 1
            If List1.Selected(i) = True Then
                MsgBox i + 1 & "行目が選択されてます"
            End If
        Next i
    End If
End Sub

投稿時間:2006/07/07(Fri) 17:51
投稿者名:ゆうすけ
Eメール:
URL :
タイトル:
Re^2: リストボックスから選択されている項目の行を取得したい
もさん、LESIAさん
お返事ありがとうございます。

for文とif文の組み合わせ方がうまくいかず、またselcountを使っていなかったので発想までは
よかったのですが上手く組み立てることができていませんでした。
ですが、理解することができました。ありがとうございます。