プロが教える店舗&オフィスのセキュリティ対策術

検索のユーザーフォームでリストから氏名を選択する下記マクロを使っていますが、同姓同名がでてきたため、リストの表示にユニークな番号を追加したいのですができません。どのような変更をしたら良いか教えてください。
Private Sub SetListBox() '← リストボックスに表示する処理追加
Dim wRow As Long
Dim wLstRow As Long
Me.lst_リスト.Clear '← リストボックスを初期化
wLstRow = 0
For wRow = 2 To Worksheets("master").Range("F1").CurrentRegion.Rows.Count
If Me.txt_氏名 = "" Then
'検索する氏名が入力されていない場合は、
'「master」シートの2行目~最終行の行番号と顧客名をリストボックスにセット
Me.lst_リスト.AddItem ""
Me.lst_リスト.List(wLstRow, 0) = wRow
Me.lst_リスト.List(wLstRow, 1) = Worksheets("master").Cells(wRow, 7)
wLstRow = wLstRow + 1
Else
If InStr(1, Worksheets("master").Cells(wRow, 7), Me.txt_氏名, vbTextCompare) > 0 Then

'検索する対象者名が一部一致した場合、行番号と対象者名をリストボックスにセット

Me.lst_リスト.AddItem ""
Me.lst_リスト.List(wLstRow, 0) = wRow
Me.lst_リスト.List(wLstRow, 1) = Worksheets("master").Cells(wRow, 9)
wLstRow = wLstRow + 1
End If
End If
Next
End Sub

「ユーザーフォームの表示を追加したい」の質問画像

質問者からの補足コメント

  • リストボックスの列を行番号、番号、氏名の3列表示にしたく、リストボックスのプロパティでcolumnCountを3にして下記コードに変更して見ましたが表示は行番号と氏名の2列しか表示されません。何処を変更したら良いか教えてください。
    Me.lst_リスト.List(wLstRow, 1) = Worksheets("master").Cells(wRow, 6)
    Me.lst_リスト.List(wLstRow, 2) = Worksheets("master").Cells(wRow, 7)

      補足日時:2023/03/27 10:22

A 回答 (2件)

No1です



>行番号と氏名の2列しか表示されません
複数列の表示ができているのなら、数だけの話なので、後は同じ要領です。
(単数と複数では違いがありますが・・)

何をどうなさっているのかこちらからはまったくわかりませんけれど、VBAにはデバッグ用のツールもいろいろ用意されていますので、それらを利用してデバッグしてみてください。
単なる勘違いやタイポ等が原因のような気がしますが・・
    • good
    • 0
この回答へのお礼

ありがとうございます。確かに記述はあってました。

お礼日時:2023/03/27 22:46

こんばんは



リスト表示を2列にして表示したいのか、1列のままで「行番号と名前」を連結して表示したいのかどちらなのでしょうね。

前者なら、列数を設定しておく必要があります。
以下のような感じでしょうか?
http://officetanaka.net/excel/vba/tips/tips158.htm
列数や列幅の設定はVBAからも行えます。
https://www.kurumico.com/excel-vba-userform-list …


後者の場合は、表示する内容の連結したテキストを作成して、それを表示させれば良いでしょう。
例えば、
Me.lst_リスト.List(wLstRow) = wRow & ” ” & Worksheets("master").Cells(wRow, 7)
みたいな感じです。
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます。

お礼日時:2023/03/27 10:08

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