前回、コンボボックスの選択内容に合わせてリストボックスの表示内容が変わる設定を教えてもらいましたが、リストボックス4列目に金額列が表示されるようになっており、 セルが空欄の場合は行ごとリストボックスに表示されないような設定をしたいです!助けてくださいm(__)m また、Caseを社名で充てていますが、社名が書き換えられた場合にわざわざコードを直さないといけないのが今後ネックになりそうです…。他に方法はありますでしょうか? ちなみに、コンボボックスの値は"WS2"のN列から引っ張ってます。 現状のコード↓ Private Sub UserForm_Initialize() Dim WS2 As Worksheet Set WS2 = Worksheets("価格表") Dim LastRow As Long With WS2 LastRow = .Cells(Rows.Count, 14).End(xlUp).Row ComboBox1.RowSource = .Name & "!" & .Range("N1", "N" & LastRow).Address End With End Sub --------------- Private Sub ComboBox1_Change() Dim WS2 As Worksheet Set WS2 = Worksheets("価格表") Dim LastRow As Long LastRow = WS2.Cells(Rows.Count, 2).End(xlUp).Row With ListBox1 .Clear .ColumnCount = 4 '--- 列数 .ColumnWidths = "120;80;30;50" '--- 列幅 Select Case ComboBox1.Text Case "あ社" '--- Eリストに設定 Dim i As Long, j As Long, EList ReDim EList(1 To LastRow - 3, 1 To 4) For i = 4 To LastRow For j = 2 To 4 EList(i - 3, j - 1) = WS2.Cells(i, j) Next EList(i - 3, 4) = WS2.Cells(i, 5) If Cells(i, 5) = "" Then Rows(i).Hidden = True Next .List = EList Case "い社" '--- Fリストに設定 ReDim FList(1 To LastRow - 3, 1 To 4) For i = 4 To LastRow For j = 2 To 4 FList(i - 3, j - 1) = WS2.Cells(i, j) Next FList(i - 3, 4) = WS2.Cells(i, 6) Next .List = FList End Select .MultiSelect = fmMultiSelectMulti '--- 複数選択可 .ListStyle = fmListStyleOption '--- チェックボックスを表示 End With End Sub ※Caseは2つだけじゃなくて10こくらいあります。
Visual Basic