Так что я не знаю, как выглядит ваша пользовательская форма, но если вы можете, я бы посоветовал переместить эти флажки в фрейм, чтобы вы могли просматривать их намного проще ... например:
Private Sub FilterButton_Click()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet
Set ws = wb.Sheets("Projects")
Dim i As Integer
' For each child control in the frame
For i = 0 To Frame1.Controls.Count - 1
' If the child control is a check box
If TypeOf Frame1.Controls.Item(i) Is CheckBox Then
' If the CheckBox is checked
If Frame1.Controls.Item(i).Value Then
'Your code here...
Debug.Print (i & " " & Frame1.Controls.Item(i).Name)
End If
End If
Next i
End Sub
Что касается применения фильтра, похоже, что каждый флажок должен быть связан со столбцом в вашем диапазоне ... (имеется в виду Checkbox1 ==> 'K'?). Я бы сделал это следующим образом: (заменяя 'ваш код') здесь "сверху"
' Add a filter to the column at the index of 'i' (+1 so we aren't using base 0)
ws.Range("K2:AQ1500").AutoFilter Field:=i + 1, Criteria1:="<>"
Пожалуйста, если вы не понимаете код, спросите! Я более чем счастлив объяснить что-либо. Помните, что копирование / вставка не учит! : D