• 締切済み

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

みんなの回答

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

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)
回答No.2

>検索結果にあたるデータ数を、”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

tx12345q
質問者

補足

何度もありがとうございます。 入れてみたのですが、チェックボックスを入れても動作しなかったです。 何が悪いのか、Me定義を顧客分類に変えてみたりしたのですが私の知識が浅いため、わかりませんでした。 せっかくご教授いただいたのに申し訳ございません。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>、"分類"にある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

tx12345q
質問者

補足

回答ありがとうございます。 検索結果にあたるデータ数を、”D”を除いて表示させることで、現状を理解したいのです。 例えば”D”が商品の販売数だった場合、”D”を除くことで在庫がわかるという仕組みです。 少し違いましたが、記載内容は参考になりました。 ありがとうございました。

関連するQ&A