
複数列表示したリストボックス内を絞り込み検索して絞り込み値も検索前と同様の複数列で表示することはできますか?
現場一覧シートのA列に現場名、K列に住所があります。(現場名は増え続けます)
別シートのセルをダブルクリックするとリストボックスを出します。(コード添付なし)
リストボックス内の絞り込み検索後に現場名をダブルクリックすると、アクティブセルに現場名と右隣に住所を表示するようにしたいです。
AddItemの複数列表示の使い方がよく理解できてない気がします。
添付写真は現場名30で絞り込み検索していますが住所列が表示されていません。絞り込み検索後に現場名と住所を表示する方法が分からずに困っております。
もし、リストボックスに複数列表示しなくても現場名ダブルクリック後にアクティブセルに現場名表示、連動して右隣セルに住所を表示が可能であればそれでも解決となります。
VBAをネットで勉強して3ヵ月たちます。
ネット上のコードを参考にして何とか他のブックは仕事で使えるVBAを組み立てましたが、これだけは記述方法が分かりません。
どうかご教授ください。
'*****************************************************
'検索フォームを開いた時の処理
'*****************************************************
Private Sub UserForm_Initialize()
Dim wLastGyou As Long
'最終行番号を取得
wLastGyou = Worksheets("現場一覧").UsedRange.Rows.Count
'リストボックスに「現場一覧」のリストをセット
With lstGenba
'列の指定:11列とする
.ColumnCount = 11
'列幅11列を2列表示にする
.ColumnWidths = "130;0;0;0;0;0;0;0;0;0;100"
'見出しの設定:無し
.ColumnHeads = False
'リストボックスの値にセルA2からK最終行までセット
.RowSource = "現場一覧!A2:k" & wLastGyou
End With
End Sub
'*****************************************************
'検索用のテキストボックス更新後の処理
'*****************************************************
Private Sub txbSerch_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Obj As Object
Dim wAddST As Variant
Dim wAddress As Variant
Dim wKamoku As Variant
Dim wLastGyou As Long
'最終行番号を取得
wLastGyou = Worksheets("現場一覧").UsedRange.Rows.Count
With Worksheets("現場一覧")
'テキストボックスの値が含まれるセルを検索
Set Obj = Range("現場一覧!A2:K" & wLastGyou).Find( _
What:=txbSerch.Value, _
LookIn:=xlValues, _
lookat:=xlPart, _
MatchByte:=False)
'検索対象がない場合はメッセージを表示
If Obj Is Nothing Then
MsgBox "現場名は存在しません。", _
vbOKOnly + vbInformation, "検索"
Else
'リストボックスをクリア
lstGenba.RowSource = ""
'検索にヒットした先頭のセルのアドレスをセット
wAddST = Obj.Address
'検索の繰り返し処理
Do
'検索にヒットしたセルのアドレスをセット
wAddress = Obj.Address
'検索にヒットしたセルの値を取得
wKamoku = .Range(wAddress).Value
'リストボックスに追加
lstGenba.AddItem wKamoku
'次の検索を行う
Set Obj = Range("現場一覧!A2:A" & wLastGyou).FindNext(Obj)
'最初にヒットしたアドレスと同じ場合は処理を終了
If Obj.Address = wAddST Then Exit Do
Loop
End If
End With
End Sub
'*****************************************************
'リストボックスをダブルクリックした時の処理
'*****************************************************
Private Sub lstGenba_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim wSheetName As Variant
'アクティブなシート名を取得
wSheetName = ActiveSheet.Name
'アクティブなセルにリストボックスの値をセット
With Worksheets(wSheetName)
.Cells(ActiveCell.Row, ActiveCell.Column).Value = lstGenba.List(lstGenba.ListIndex, 0)
.ActiveCell.Offset(0, 1).Value = lstGenba.List(lstGenba.ListIndex, 10)
End With
'フォームを終了する
Unload Me
End Sub


No.1ベストアンサー
- 回答日時:
一例です。
'*****************************************************
'検索用のテキストボックス更新後の処理
'*****************************************************
Private Sub txbSerch_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Obj As Object
Dim wAddST As Variant
Dim wAddress As Variant
Dim wKamoku As Variant
Dim wLastGyou As Long
'---追加箇所--------------------------------------
Dim i As Long
'リスト表示11項目→3項目(現場名、空白、住所1)
lstGenba.ColumnCount = 3
lstGenba.ColumnWidths = "130;10;100"
'--------------------------------------------------
'最終行番号を取得
wLastGyou = Worksheets("現場一覧").UsedRange.Rows.Count
With Worksheets("現場一覧")
'テキストボックスの値が含まれるセルを検索
Set Obj = Range("現場一覧!A2:K" & wLastGyou).Find( _
What:=txbSerch.Value, _
LookIn:=xlValues, _
lookat:=xlPart, _
MatchByte:=False)
'検索対象がない場合はメッセージを表示
If Obj Is Nothing Then
MsgBox "現場名は存在しません。", _
vbOKOnly + vbInformation, "検索"
Else
'リストボックスをクリア
lstGenba.RowSource = ""
'検索にヒットした先頭のセルのアドレスをセット
wAddST = Obj.Address
'検索の繰り返し処理
Do
'検索にヒットしたセルのアドレスをセット
wAddress = Obj.Address
'--------変更箇所---------------------------------------
i = Obj.Row
'検索にヒットしたセルの値を取得とリストボックスに追加
lstGenba.AddItem .Cells(i, 1)
lstGenba.List(lstGenba.ListCount - 1, 1) = ""
lstGenba.List(lstGenba.ListCount - 1, 2) = .Cells(i, 11)
'--------------------------------------------------------
''検索にヒットしたセルの値を取得
'wKamoku = .Range(wAddress).Value
'
''リストボックスに追加
'lstGenba.AddItem wKamoku
'次の検索を行う
Set Obj = Range("現場一覧!A2:A" & wLastGyou).FindNext(Obj)
'最初にヒットしたアドレスと同じ場合は処理を終了
If Obj.Address = wAddST Then Exit Do
Loop
End If
End With
End Sub
'*****************************************************
'リストボックスをダブルクリックした時の処理
'*****************************************************
Private Sub lstGenba_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim wSheetName As Variant
'アクティブなシート名を取得
wSheetName = ActiveSheet.Name
'--------------変更箇所-----------------------------------------------
'アクティブなセルにリストボックスの値をセット
With Worksheets(wSheetName)
.Cells(ActiveCell.Row, ActiveCell.Column).Value = lstGenba.List(lstGenba.ListIndex, 0)
.Cells(ActiveCell.Row, ActiveCell.Column + 1).Value = lstGenba.List(lstGenba.ListIndex, 2)
End With
'--------------------------------------------------------------------------
'アクティブなセルにリストボックスの値をセット
'With Worksheets(wSheetName)
'.Cells(ActiveCell.Row, ActiveCell.Column).Value = lstGenba.List(lstGenba.ListIndex, 0)
'.ActiveCell.Offset(0, 1).Value = lstGenba.List(lstGenba.ListIndex, 10)
'End With
'フォームを終了する
Unload Me
End Sub
ありがとうございます。
思うように動きました!
まだ完全に理解できてませんので勉強しようと思います。
もう諦めかけていたところに教えて頂いて本当に感謝しています!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA リストボックス内の値を複数選択し別シートに転記するには
Visual Basic(VBA)
-
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
VBA リストボックス(複数条件)で検索し、転記方法についてご教示ください。
Visual Basic(VBA)
-
-
4
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
-
5
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
VBAのリストボックスをマウスでスクロール
PowerPoint(パワーポイント)
-
8
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
11
EXCEL2013 VBA ListBox 未選択
Excel(エクセル)
-
12
エクセル VBA ユーザーフォーム リストボックスで選択した値をテキストボックスに自動表示
Visual Basic(VBA)
-
13
ユーザーフォーム、コンボボックスで重複せず選択リストを表示させるには
Excel(エクセル)
-
14
【Excel VBA】検索結果セルの行をリストボックスに表示させたい
Excel(エクセル)
-
15
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
-
16
VBA リストボックスをダブルクリックしデータを修正したいのですが…。
Visual Basic(VBA)
-
17
VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
-
18
コンボボックスのインデックスが不正
Visual Basic(VBA)
-
19
ExcelVBA でリストリストボックスに列見出しをコーディングでつける
Excel(エクセル)
-
20
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
検便についてです。 便は取れた...
-
VLOOKUP関数を使用時、検索する...
-
excelでsin二乗のやり方を教え...
-
彼女のことが好きすぎて彼女の...
-
尿検査前日に自慰行為した時の...
-
腕を見たら黄色くなってる部分...
-
EXCELで式からグラフを描くには?
-
精液の落とし方を教えてください
-
精子に血が・・・
-
値が入っているときだけ計算結...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
勃起する時って痛いんですか? ...
-
2つの数値のうち、数値が小さい...
-
ある範囲のセルから任意の値を...
-
化合物のモル吸光係数データベ...
-
イタリアから帰国する際、肉製...
-
ワードのページ番号をもっと下...
-
風俗店へ行く前のご飯
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報