いつもお世話になっております。
Listbbox1
Listbbox2
があります。
例)
担当選択したら
お客様を表示されるのですが、
重複してないのを表示させることは
可能でしょうか。
下記のコードは添付ファイルのようになります。
ただ、お客様だけは重複削除はできていません。
わかる方おしえてくれませんでしょうか
Private Sub UserForm_initialize()
With Me.ListBox2
.AddItem "斉藤"
.AddItem "加藤"
.AddItem "佐藤"
.AddItem "内藤"
End With
End Sub
Private Sub ListBox2_Click()
Dim i As Long
With ListBox1
.Clear
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, "C").Value = ListBox2.List(ListBox2.ListIndex) Then
.AddItem Cells(i, "B").Value
End If
Next
End With
End Sub
No.2ベストアンサー
- 回答日時:
Private Sub ListBox2_Click()を以下のようにしてください。
dictionaryを使用して
同じお客様の場合は、登録しないようにしています。
Private Sub ListBox2_Click()
Dim i As Long
Dim dicT As Object
Set dicT = CreateObject("Scripting.Dictionary")
With ListBox1
.Clear
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, "C").Value = ListBox2.List(ListBox2.ListIndex) Then
If dicT.exists(Cells(i, "B").Value) = False Then
.AddItem Cells(i, "B").Value
dicT(Cells(i, "B").Value) = True
End If
End If
Next
End With
End Sub
No.3
- 回答日時:
Dictionaryオブジェクトについては過去に何度も質問されてたので解決案を自力にて見つけて欲しかったのですが。
そこで別件として改めてワークシート関数によるもの(フィルター込み)を。
Private Sub ListBox2_Click()
Dim r As Range
If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
With ListBox1
.Clear
Range("C1").AutoFilter 3, ListBox2.List(ListBox2.ListIndex)
For Each r In Range("B2", Cells(Rows.Count, "B").End(xlUp)).SpecialCells(xlCellTypeVisible)
If WorksheetFunction.CountIfs(Range("C2", r.Offset(, 1)), ListBox2.List(ListBox2.ListIndex), _
Range("B2", r), r.Value) = 1 Then
.AddItem r.Value
End If
Next
End With
ActiveSheet.AutoFilterMode = False
End Sub
-----------
CountIfsの方がDictionaryオブジェクトよりはデータ量によって遅いらしいので無駄な判定をしないようフィルターにて必要なデータを抽出してみました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) フォーム上のリストボックスに重複して表示しています 3 2022/10/19 11:55
- Visual Basic(VBA) リストポックスへの抽出方法 1 2022/08/10 17:58
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) リストポックスについて 2 2022/11/05 20:48
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
質問すいません。 javascriptの...
-
C#でフォームのオブジェクト名...
-
EXCEL VBAにて動的にCheckBOXを...
-
JAVAからHTMLへ値を返す方法
-
iterator とiterableの関係がわ...
-
Accessの連結・非連結オブジェ...
-
ワイルドカード<?>と型パラメー...
-
COMコンポーネントって何?
-
戻り値がクラスオブジェクト
-
VBAのWindowオブジェクトとWork...
-
多人数のじゃんけんプログラム
-
ビジュアルC++でボタンの有...
-
Excelで =EMBED("Acrobat Docu...
-
オブジェクトレベルとメタレベル
-
JSP→Servlet間の連携 applicat...
-
オペレータオーバロードでクラ...
-
Javaの問題なんですが、(this==...
-
Visual Studioでのbmpファイル...
-
開始日(Date型)から終了日(Date...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
JAVAからHTMLへ値を返す方法
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBA 同じ名前のオブジェクトを...
-
Object型からDouble型へのキャスト
-
ビジュアルC++でボタンの有...
-
COMコンポーネントって何?
-
LISTBOXの内容が更新されま...
-
Vbで通常使用するプリンターを...
-
多人数のじゃんけんプログラム
-
オブジェクト名をforループ内で...
-
ASP.net 教えてください!!(...
-
JSPのout.printについて
-
時間帯判定をする。
-
error C2712: オブジェクト ア...
-
Accessの連結・非連結オブジェ...
おすすめ情報