フォーム上に、リストボックスを1つ作り複数選択を可能としています。
最終的に選択された複数のデータを変数へと代入したいのですが、どうすれば良いのでしょうか?
例えば・・・
リストボックスにて最終的に
林檎
蜜柑
苺
の3つを選択したとすると・・・
変数A = 林檎
変数B = 蜜柑
変数C = 苺
とデータを取得したいと考えています。
良いご意見がありましたらご指導宜しくお願い致します。
ほかの方はどうやっているのかは知りませんが、
リストボックスが選択される。(=SelectedがTrue)
というころで、
Private Sub Command1_Click()
'複数の項目を選択した場合の取得
Dim ICount As Integer
For ICount = 0 To List1.ListCount - 1
If List1.Selected(ICount) Then
Debug.Print List1.List(ICount), ICount + 1
End If
Next ICount
End Sub
ってな具合でどうでしょうか?
Dim i_Cnt as integer
For i_Cnt=0 To List1.ListCount - 1
If List1.Selected(i_Cnt)=True Then
List1.List(i_Cnt) '<これで選択されているItem名が取得可能なので
'あとは,変数にぶち込むだけです.
End If
Next i_Cnt
いな様
ご返答ありがとうございます。
エイミディエイトウィンドウにての結果は思った通りなのですが、
コレを各変数に代入するにはどうすれば良いのでしょうか?
リストボックスには
001 | 林檎
002 | 蜜柑
と表示しており、変数A = 001。変数B = 林檎。変数C = 002。変数D = 蜜柑。
と代入したいと考えています。
回答を頂いておきながら、どうしても自分では代入する事が出来ませんでした。
宜しければ、ご指導をお願い致します。
ん〜、データの持ち方の問題かな。
こうゆう場合には、
配列に格納したほうが、いろいろと使いまわせて
便利です。
Private Sub Command1_Click()
'複数の項目を選択した場合の取得
Dim ICount As Integer
Dim SelectData() as Integer
For ICount = 0 To List1.ListCount - 1
If List1.Selected(ICount) Then
SelectData(ICount) = List1.List(ICount)
Debug.Print List1.List(ICount), ICount + 1
End If
Next ICount
End Sub
でどうでしょ?
(ん〜デバッグしてないから、動くか不安)
いな様
更に回答を頂きましてありがとうございます。
実行してみますと・・・
<<インデックスが有効範囲にありません>>
とのメッセージが表示されてしまうのですが、コレはどういった問題なのでしょうか?
何度も申し訳有りませんが宜しくお願い致します。
これで出来るはずです。
各内容は調べてくださいね。
Option Explicit
Dim SelectData() As String
Private Sub Command1_Click()
Dim Cnt As Integer
Dim ICount As Integer
Cnt = List1.ListCount
ReDim SelectData(Cnt)
For ICount = 0 To Cnt - 1
If List1.Selected(ICount) Then
SelectData(ICount) = List1.List(ICount)
Debug.Print List1.List(ICount), ICount + 1
End If
Next ICount
End Sub
皆様
私の分かり難い説明に最後まで返答して頂きありがとうございます。
ご意見を参考して思い通りの事が出来そうです。
本当に助かりました。
ありがとうございました。