初心者です。
ListBoxで複数の項目を選択することは可能でしょうか?
ListBoxのプロパティ MultiSelect を 標準or拡張 にすると
複数選択できることは分かりましたが、選択(強調表示)した
値のみを取得するにはどうしたらよいのでしょうか?

A 回答 (1件)

こんにちは。

maruru01です。
Selectedプロパティを使います。
例えば、2番目が選択されていれば
Selected(1) = True
になっていますので、

For i = 0 To List1.ListCount - 1
  If List1.Selected(i) Then
    (ここに処理を書く:配列に格納するなど)
  End If
Next i

という風に選択項目を拾います。
では。
    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelVBAのLISTBOXから複数行選択された項目を取得する方法

タイトルのとおりなのですが、
ListBoxで、MultiSelectのプロパティを設定後に、
実際の動作で選択された全ての項目を取得する方法を教えてください。

自分でも探してはおりますが、もしよろしければ
ご指導いただけますと幸いです。

くれぐれも、~を見れば分かるでしょ…などといった
中傷的なご返答はご遠慮願います。

よろしくお願いいたします。

Aベストアンサー

回答の簡単のために、ワークシートにリストボックスを1つ貼り付け
プロパティで-1 fmMultiSelectMulti を選ぶ。
ListFilRangeにセル範囲を設定しておく。(注)1行空白行をしておく。
回答の簡単のために、リストボックスの
DblClickイベント(注)に
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim lItem As Long
For lItem = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(lItem) = True Then
Sheet1.Range("A65536").End(xlUp).Offset(1, 0) = ListBox1.List(lItem)
ListBox1.Selected(lItem) = False
End If
Next
End Sub
これで複数選択し、リストボックスの余白行(注)をダブルクリックすると、A列に選択したものが、累積入力される。
(注)あまり自然な設例ではなかったと反省するが、上記コードの回答がメインなので、このままにします。

回答の簡単のために、ワークシートにリストボックスを1つ貼り付け
プロパティで-1 fmMultiSelectMulti を選ぶ。
ListFilRangeにセル範囲を設定しておく。(注)1行空白行をしておく。
回答の簡単のために、リストボックスの
DblClickイベント(注)に
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim lItem As Long
For lItem = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(lItem) = True Then
Sheet1.Range("A65536").End(xlUp).Offset(1, ...続きを読む

QVBAのListBoxで複数選択してExcelの1つのセルに反映

いつもお世話になります。
出来るか教えて欲しいのですが、

UserFormに「ListBox」と「Commandbutton」があります。
「ListBox」には5つの選択肢がありますが、これを複数選択可に
して、「Commandbutton」をクリックすることにより、
Excelの1つのセルに「ListBox」で選択した項目を反映させることは
出来ますか?

出来る場合どのようにすれば宜しいでしょうか?

Aベストアンサー

ListBoxのSelectedプロパティを使えばどのアイテムが選択されているか確認出来ます

ボタンのクリックイベントで
dim n as integer, s as string
for n = 0 to ListBox1.Count-1
  if ListBox1.Selected( n ) then
    s = s & ListBox1.List( n )
  end if
Next
Range("A2").value = s
といった具合で出来るかと思います

QListViewで複数選択された項目を一度に削除する方法

ListViewで選択された複数のアイテムの値の取得方法と複数選択された項目を一度に削除する方法を教えてください。

Aベストアンサー

サンプルです。
一度に取得はムリなので、ループを使用します。

  Dim itmLvw As ListItem
  Dim i    As Long
  
  '選択されているアイテムの情報を調査
  For Each itmLvw In ListView1.ListItems
    If itmLvw.Selected Then
      Debug.Print itmLvw.Index & "番目が選択されています"
    End If
  Next itmLvw
  
  'リストの後ろの方から、選択されているアイテムを削除
  For i = ListView1.ListItems.Count To 1 Step -1
    Set itmLvw = ListView1.ListItems(i)
    If itmLvw.Selected Then
      ListView1.ListItems.Remove itmLvw.Index
    End If
  Next i

Qlistbox:csvファイルから読み出してlist項目に出したい

ソフトのヘルプファイルをvisual basicで作成しようとしております。
csvファイルから読み出してlist項目に出したいです。
1番目のリストで大項目を選び、するとそのリストに応じた2番目のリストが出現。その2番目の小項目リストを選ぶとヘルプ内容が表示されるというものでしす。
あらかじめプログラム中にリストを用意するものはできますが、作成したいのは既存のcsvファイルを活用したものです。
リストに出てくる項目がcsvファイルから読み出されるようにするのが第一歩ですが、調べたり自分でトライしても、成功しません。
どうぞよろしくお願いいたします。

Aベストアンサー

ヘルプファイルが外部ファイルに有るのは拡張性、変更容易性で良いと思います。
しかしCSVファイルはシーケンシャルファイルで、目的に合ったものを探すのに、平均半分程度むだ読みをしなくてはならない点です。
第1項目は人間がみてその中から選ぶから(しかし多いと
分類が必要)良いが、有る項目が選ばれた時、どの小項目
を選べば良いか良いう情報はどうします。
すなわちヘルプの内容によって適切なコード付けでも行われていますか?
WEB照会のように語句でやるのは、本当は難しいアルゴリズムがあるようです。
大項目のCSVファイルと、小項目のCSVファイルは別ファイルですか。両者はコード体系で有機的に結ばれていますか。その辺のありさまで、コードはガラリと様相を変えそうです。
そう言うことを書いていないと言うことは、関心が向いていなくて、それでは具体的なコードまでも教えて欲しいのかもしれないが、私見では有りますが、出来ないでしょう。
ヘルプファイルを作るときに既に検討すべき問題を突き付きつけられているはずです。
参考関連?ヘルプコンテキスト番号(ID)
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200308_03080073.html
http://hp.vector.co.jp/authors/VA014071/tips/help.html

ヘルプファイルが外部ファイルに有るのは拡張性、変更容易性で良いと思います。
しかしCSVファイルはシーケンシャルファイルで、目的に合ったものを探すのに、平均半分程度むだ読みをしなくてはならない点です。
第1項目は人間がみてその中から選ぶから(しかし多いと
分類が必要)良いが、有る項目が選ばれた時、どの小項目
を選べば良いか良いう情報はどうします。
すなわちヘルプの内容によって適切なコード付けでも行われていますか?
WEB照会のように語句でやるのは、本当は難しいアルゴリズム...続きを読む

QListView 項目の選択/選択解除について

 ListViewに表示する情報が1件しかないとき、その情報が常に選択された状態なので、
困っています。

 1件しかなくても、選択したり、選択を解除したりすることは出来ないのでしょうか?

 または、ListViewでは出来ないけど、他のコントロールなら出来ると言う情報があり
ましたらぜひ教えてください。

 よろしくお願いします。

Aベストアンサー

失礼しました
× HitItem
○ HitTest
でした。

Private Sub Form_Load()
  Dim i    As Integer
  
  With Me.ListView1
    .View = lvwList       '//表示形式:一覧
    .HideSelection = False   '//リストビューがフォーカスを失っても、選択状態を保持する
    .MultiSelect = True     '//複数選択可能
    
    'ダミーデータの登録
    .ColumnHeaders.Add , , "ヘッダ"
    For i = 1 To 10
      Me.ListView1.ListItems.Add , , "Dmy Data" & i
    Next i
 
  End With
End Sub

Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  Dim itmX  As ListItem
  
  With Me.ListView1
    'マウス位置のアイテムを取得
    Set itmX = .HitTest(x, y)
    '取得できたなら未処理
    If Not (itmX Is Nothing) Then
      GoTo PGMEND
    End If
    
    '現在選択中のアイテムを取得
    Set itmX = .SelectedItem
    '取得できなかったなら未処理
    If (itmX Is Nothing) Then
      GoTo PGMEND
    End If
    
    '選択解除
    Set .SelectedItem = Nothing
    itmX.Selected = False
  End With
  
PGMEND:
  Set itmX = Nothing
End Sub

失礼しました
× HitItem
○ HitTest
でした。

Private Sub Form_Load()
  Dim i    As Integer
  
  With Me.ListView1
    .View = lvwList       '//表示形式:一覧
    .HideSelection = False   '//リストビューがフォーカスを失っても、選択状態を保持する
    .MultiSelect = True     '//複数選択可能
    
    'ダミーデータの登録
    .ColumnHeaders.Add , , "ヘッダ"
    For i = 1 To 10
      Me.ListView1.ListItems.A...続きを読む


人気Q&Aランキング

おすすめ情報