- 締切済み
EXCEL リストボックスのデータから除外したい
次の3項目のフォームがあります。 "番号" "お店" "分類" これら項目に入力した値からシートデータベースの情報をリストボックスに表示させているのですが、"分類"にあるABCDEの情報のうちDの情報を省いて表示させたいのですがわかりません。 省く指定はチェックボックスを考えています。 ご教授よろしくお願いいたします。 ↓コード Private Sub SetListBox() Dim wRow As Long Dim wLstRow As Long Dim wHitFlg As Boolean Me.lst顧客リスト.Clear wLstRow = 0 With Worksheets("顧客情報") For wRow = 2 To .Range("A1").CurrentRegion.Rows.Count wHitFlg = True If Me.txt顧客名 <> "" Then If InStr(1, .Cells(wRow, .Range("顧客名列").Column), Me.txt顧客名, vbTextCompare) = 0 Then wHitFlg = False End If End If If Me.cmb顧客分類 <> "" Then If .Cells(wRow, .Range("顧客分類列").Column) <> Me.cmb顧客分類 Then wHitFlg = False End If End If If Me.TextBox1 <> "" Then If InStr(1, .Cells(wRow, .Range("フリガナ列").Column), Me.TextBox1, vbTextCompare) = 0 Then wHitFlg = False End If End If If wHitFlg = True Then Me.lst顧客リスト.AddItem "" Me.lst顧客リスト.List(wLstRow, 0) = wRow Me.lst顧客リスト.List(wLstRow, 1) = Worksheets("顧客情報").Cells(wRow, 2) Me.lst顧客リスト.List(wLstRow, 2) = Worksheets("顧客情報").Cells(wRow, 3) Me.lst顧客リスト.List(wLstRow, 3) = Worksheets("顧客情報").Cells(wRow, 8) wLstRow = wLstRow + 1 End If Next End With
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- watabe007
- ベストアンサー率62% (476/760)
lst顧客リストの表示は 1列目:番号 2列目:顧客名 3列目:顧客分類 4列目:状態 であり、チェックボックスをONで3列目の[顧客分類]の中から"販売済"を省く Private Sub CheckBox1_Click() Dim i As Long If Me.CheckBox1.Value = True Then With Me.lst顧客リスト For i = .ListCount - 1 To 0 Step -1 If .List(i, 2) = "販売済" Then .RemoveItem (i) End If Next End With End If End Sub
- watabe007
- ベストアンサー率62% (476/760)
>検索結果にあたるデータ数を、”D”を除いて表示させることで、 チェックボックスがONならばリストボックスから"D"を省く > Me.lst顧客リスト.List(wLstRow, 2) = Worksheets("顧客情報").Cells(wRow, 3) > Me.lst顧客リスト.List(wLstRow, 3) = Worksheets("顧客情報").Cells(wRow, 8) >wLstRow = wLstRow + 1 >End If >Next >End With Dim i As Long If Me.CheckBox1.Value = True Then With Me.lst顧客リスト For i = .ListCount To 1 Step -1 If .List(i - 1, 2) = "D" Then .RemoveItem (i - 1) End If Next End With End If End Sub もしくはチェックボックスをONでリストボックスから"D"を省く Private Sub CheckBox1_Click() Dim i As Long If Me.CheckBox1.Value = True Then With Me.lst顧客リスト For i = .ListCount To 1 Step -1 If .List(i - 1, 2) = "D" Then .RemoveItem (i - 1) End If Next End With End If End Sub
- watabe007
- ベストアンサー率62% (476/760)
>、"分類"にあるABCDEの情報のうちDの情報を省いて表示 チェックボックスをONする事でcmb顧客分類からDを省き 選択できないようにすれば Private Sub UserForm_Initialize() Me.cmb顧客分類.List = Array("A", "B", "C", "D", "E") End Sub Private Sub CheckBox1_Click() If Me.CheckBox1.Value = True Then Me.cmb顧客分類.RemoveItem 3 Else Me.cmb顧客分類.AddItem "D", 3 End If End Sub
補足
回答ありがとうございます。 検索結果にあたるデータ数を、”D”を除いて表示させることで、現状を理解したいのです。 例えば”D”が商品の販売数だった場合、”D”を除くことで在庫がわかるという仕組みです。 少し違いましたが、記載内容は参考になりました。 ありがとうございました。
補足
何度もありがとうございます。 入れてみたのですが、チェックボックスを入れても動作しなかったです。 何が悪いのか、Me定義を顧客分類に変えてみたりしたのですが私の知識が浅いため、わかりませんでした。 せっかくご教授いただいたのに申し訳ございません。