• ベストアンサー

リストボックスの複数選択時のダブルクリックについて

リストボックスをMultiExtendedで設定してあり、 複数を選択した状態でその選択されているどれかのアイテムを ダブルクリックすると選択されている全てのアイテム(番号)を 取得したいのですが、どのようにしたらできるでしょうか。 ListBox1_SelectedIndexChangedで複数選択アイテム番号を記憶させて 次にダブルクリックした際に、そのアイテム番号が記録の中の番号に 含まれていれば、記録してある番号のアイテムを全部取得して、 その後で、その記録されていた番号のアイテムを全部選択状態に 設定すればダブルクリックしたように見えると思ったのですが、 ダブルクリックの一回目のクリックでListBox1_SelectedIndexChanged イベントが 発生してしまい、複数選択の記録が消えてしまいます。 フラグを立てたりと色々試しているのですが、どうもうまく動作してくれません。 良い方法やヒントがありましたら、ご教授頂けると幸いです。 VB.NET2003、Framework1.1環境です。

質問者が選んだベストアンサー

  • ベストアンサー
  • xsizukux
  • ベストアンサー率80% (4/5)
回答No.2

参考までに、 (1)選択アイテム番号の取得をクリックイベントで行い配列に格納。ダブルクリックイベントで処理する。 (2)リストボックス→チェックドリストボックスに変更する。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

運用方法で対処してみてはいかがでしょう ダブルクリックする際には CtrlまたはShiftなどを押したまま行ってもらうということにしてやればいいように思います

関連するQ&A

  • リストボックスからの複数選択

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

  • ダブルクリックしていないのに・・・

    質問カテゴリーを間違えていたらすみません。 数日ほど前から、ダブルクリックしていないのに、クリックしただけでファイルやソフトが開いたり、シフトやコントロールキーで複数選択ができなくなってしまいました。(ドラッグをすれば複数選択できるのですが。) イラレでは、例えばテキストオブジェクトを選択したいのに、クリックするとすぐにテキストの編集になってしまって、使い勝手が非常に悪い状態です。 試しにコントロールパネルの「マウス」でダブルクリックの速度を最も遅くしてみましたが、速度の問題ではないようでした。 マウス自体が壊れてしまったのでしょうか。それとも、どこかで設定が変わってしまったのでしょうか。 もしお分かりになる方がいらっしゃいましたら、アドバイスお願いします。

  • 複数リストボックスの連動について

    複数リストボックスの連動についてお聞きします。 エクセル2003、VBAのユーザーフォームのリストボックスになります。 VBAに関わらずプログラミング全般初心者で恐縮ですが よろしくご指導ください。 毎月の明細から 地域を分類軸に、そこに含まれる支店を、地域をまたいで複数選択ができるリストボックスの作成をしたいと考えてます。 ListBox1(地域),ListBox2(支店)に値を重複無しに、組み合わせを表示させるまではできたのですが、 ListBox1(地域)の選択を解除した後に、再び選択すると、 ListBox2(支店)の値が重複して表示されてしまいます。 ネットで知恵を探したのですが、 ListBox1のクリックイベント時に、ListBox2の値を消す しか見つからず、自分の課題がどうしても解決できません。 どのような方向性で考えれば、解決できるのか教示いただきたいです。 自分としては、ListBox1の選択を解除したときに、 対応するListBox2が消えればと考えましたが・・・全くうまくいきません。 もし、自分の考えが的外れでしたら、正しい考え方をお教えいただきたいです。 考えが妥当であれば、どういう記述をすべきなのか、 教授願いたいです。 よろしくお願いします。

  • Excel マクロ リストボックス複数選択

    いろいろ拝見させていただいているのですが 理解が低いのが原因で困っています。 データのシートがあります。 ・B列には、起点となる人の名前が記載(300名ほど) ・データの入っている列は、A:CE データシートでB列にてオートフィルタをかけ 抽出シートに転記したい。 抽出シートでは、ユーザーフォームを組みました。 オプションボタン1 単一選択 オプションボタン2 複数選択 オプションボタン3 拡張選択 リストボックス(2・3に対して) コマンドボタン   終了 とした場合、単一選択はできたのですが 複数選択の場合 該当数が「0」の表記となってしまい、うまくいきません。 同じような質問が…というお返事があることを承知でお伺いしています。 いただいた回答を基に、勉強をしていきたいと思っていますので なにとぞよろしくお願い申し上げます。 Private Sub UserForm_Initialize() ListBox1.ColumnCount = 1 'リストボックスの列は1 ListBox1.BoundColumn = 0 'ListIndexの値(行数)を使用する ListBox1.MultiSelect = 0 '最初は単一選択状態にする ListBox1.RowSource = 'リストのソース ListBox1.ColumnHeads = True '列見出し表示 OptionButton1.Value = -1 'オプションボタン1を選択状態にする End Sub Private Sub OptionButton1_Click() ListBox1.MultiSelect = fmMultiSelectSingle '単一選択状態にする End Sub Private Sub OptionButton2_Click() ListBox1.MultiSelect = fmMultiSelectMulti '複数選択状態にする End Sub Private Sub OptionButton3_Click() ListBox1.MultiSelect = fmMultiSelectExtended '拡張(連続)選択状態にする End Sub Private Sub ListBox1_Click() 'リストボックスがクリックされたとき(単一選択) Dim 条件 As String 条件 = UserForm1.ListBox1.Text '氏名 With Worksheets("データ") .Range("A1").AutoFilter _ field:=2, Criteria1:=条件 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("抽出").Range("A1") .Range("A1").AutoFilter End With End Sub Private Sub CommandButton1_Click() '選択終了ボタンがクリックされたとき(複数・拡張選択) Dim 条件 As String Dim lastRow As Long With ListBox1 If .ListIndex = -1 Then Exit Sub '何も選択されていない For 条件 = 0 To .ListCount - 1 If .Selected(条件) Then '行選択あり With Worksheets("データ") .Range("A1").AutoFilter _ field:=2, Criteria1:=条件 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("抽出").Range("A1") .Range("A1").AutoFilter End With End If Next End With End Sub Private Sub UserForm_Deactivate() Unload UserForm1 '×ボタンを押したら、ユーザーフォームのunloadをする End Sub

  • リストボックスについてです。

    リストボックスについてです。 B列をダブルクリックするとリストボックスが立ち上がり、データを選択してB列に表示できるように設定されていますが、困った現象が起こっています。 例えば、sheet1のB10にダブルクリックでリストボックスを表示し、そこから「あいうえお」という名前を表示させて、sheer1編集が終わったとします。 次のsheet2でB1をダブルクリックしているのに、sheet2のB10に勝手に「あいうえお」と表示されてしまいます。 コードは以下になってます。 VBA初心者なのでエクセルのサイト等からコピペ等して作ったコードです。 どこかおかしな箇所があると思うのですが、何処がおかしいのかがわかりません。 お分かりになる方、教えていただければ助かります。 ' ◆Worksheetのコード◆ '---------------------------------------------------- '選択範囲を変更したときに実行される Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) UserForm1.ListBox1.RowSource = "データ!A1:A100"  '表示するデータ範囲 UserForm1.ListBox1.Font.Size = 12    'フォントサイズ If Target.Column = 2 Then 'B列なら 行 = Target.Row '行番号を取得する UserForm1.Show 'ユーザーフォームを表示する End If End Sub '=================================================================================== ' ◆UserForm1のコード◆ '-------------------------------------------------------------------------- Private Sub ListBox1_Click() 'クリックされたときに実行される If 行 <> 1 Then '1行目でなければ Cells(行, 2) = ListBox1.Value 'リストボックスの値をセルにセットする End If UserForm1.Hide 'ユーザーフォームを非表示にする End Sub Private Sub UserForm_Deactivate() '非アクティブになったときに実行される Unload Me 'ユーザーフォームをメモリから削除する End Sub '========================================================================================= '============================== ' ◆標準モジュールのコード◆ Option Explicit Public 行 As Variant '行番号 Sub auto_open() Load UserForm1 'ユーザーフォームをメモリに読み込む End Sub '==============================

  • ExcelVBA リストボックスの複数選択処理がうまくいきません

    こんばんは、助けてください。 EXCEL2007です。 ユーザーフォームにリストボックス(Listbox1)を複数選択可能で作成。 リストボックス各行の4列目には「A」か「B」のいずれかが入っており、選択した行の4列目が「A」ならば「B」を、 「B」ならば「A」をCommandButton1押下でセルに反映させたいのですが、うまくいきません。 [反映先のセル] ・リストボックス1行目⇒セルC4(列番号3) ・リストボックス2行目⇒セルG4(列番号7) ・リストボックス3行目⇒セルK4(列番号11) ・リストボックス4行目⇒セルO4(列番号15) ・リストボックス5行目⇒セルS4(列番号19) ・以降同規則でつづく [コード] 01 Private Sub CommandButton1_Click() 02   Dim ListRow As Integer 03   Dim Retsu As Integer 04 05   For ListRow = 0 To Listbox1.ListCount - 1 06     If Listbox1.Selected(ListRow) Then 07       Retsu = (ListRow + 1) * 3 + ListRow 08       If Listbox1.List(ListRow, 3) = "A" Then 09         Cells(4, Retsu).Value = "B" 10       Else 11         Cells(4, Retsu).Value = "A" 12       End If 13    End If 14  Next ListRow 15 End Sub [現象] 1.単一選択時は、OK。 2.複数選択時は、選択した行のうち一番はじめの行のみOK。 3.試しに、EndSub直前でListbox1.Selected(各ListRow)を検証すると、すべてFalseになってしまっている。 4.IF文(07~12行目)を削除した上で、EndSub直前でListbox1.Selected(各ListRow)を検証すると、True/Falseは意図通りになっている。 IF文(07~12行目)が悪さをしているのでしょうか? うまいやり方をご教授いただければ、幸いです。m(_ _)m

  • アクセスのリストボックスの複数選択

    リストボックスの設定方法を教えてください。 1画面目にテーブルと連結したリストボックスがあります。 複数選択した情報をSelectedプロパティで取得しています。 次画面にて同じテーブルに連結されているリストボックスを 1画面目と同じ様に選択されている状態にしたいのですが、 方法がわかりません。 選択されている内容だけをリストボックスに表示する方法は 見つけたのですが、同じ状態で選択される方法がわかりません。 ご回答、宜しくお願いします。

  • ダブルクリックが使えなくなってしまいました

    WIN98でUSB接続のマウスを使用していますが、ファイルを開くときにダブルクリックがきかなくなってしまいました。仕方なく現在は右クリックから開くを選択しています。フォルダオプションの設定ではカスタム設定で、「シングルクリックで選択し、ダブルクリックで開く」にしております。どうしたらよいのでしょうか?よろしくお願いいたします。

  • リストの複数選択について

    リストボックスで複数選択(拡張)に設定した場合に Ctrl キーを押しながらクリックすることによって、リスト内の項目を 1 つずつ選択、選択解除出来る機能を Ctrl キーを押さない状態で実現したいのですが 可能でしょうか? また、ほかの機能(コンポーネント)で代用出来る物があれば教えてください

  • 複数選択のListBoxでClickイベントが拾えません

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

専門家に質問してみよう