Скрыть строки на основе пользовательской формы

Доброе утро всем,

У меня есть макрос, который я хочу сортировать. Кнопка в моей книге вызывает небольшую пользовательскую форму с 10 флажками. Пользователь должен выбрать те категории, которые он хочет просмотреть, и выбрать сортировку. Результат, который я хочу, это только те категории, которые он выбрал для отображения, но я получаю все или ничего из прилагаемого макроса. Ниже приведен макрос, который поддерживает форму / кнопку для сортировки категорий. Я искал через Google и несколько других форумов и не могу найти ответ, имеющий отношение к моей проблеме! Любая помощь, которую вы могли бы предложить, была бы весьма признательна.

Благодаря!

Private Sub cmdSort_Click() LastRow = Range("A" & Rows.Count).End(xlUp).Row If chkFE = True Then For Each cell In Range("BC4:BC" & LastRow) If UCase(cell.Value) <> "Fire Extinguishers" Then cell.EntireRow.Hidden = True End If Next End If If chkChem = True Then For Each cell In Range("BD4:BD" & LastRow) If UCase(cell.Value) <> "Chem" Then cell.EntireRow.Hidden = True End If Next End If If chkFL = True Then For Each cell In Range("BE4:BE" & LastRow) If UCase(cell.Value) <> "FL" Then cell.EntireRow.Hidden = True End If Next End If If chkElec = True Then For Each cell In Range("BF4:BF" & LastRow) If UCase(cell.Value) <> "Elec" Then cell.EntireRow.Hidden = True End If Next End If If chkFP = True Then For Each cell In Range("BG4:BG" & LastRow) If UCase(cell.Value) <> "FP" Then cell.EntireRow.Hidden = True End If Next End If If chkLift = True Then For Each cell In Range("BH4:BH" & LastRow) If UCase(cell.Value) <> "Lift" Then cell.EntireRow.Hidden = True End If Next End If If chkPPE = True Then For Each cell In Range("BI4:BI" & LastRow) If UCase(cell.Value) <> "PPE" Then cell.EntireRow.Hidden = True End If Next End If If chkPS = True Then For Each cell In Range("BJ4:BJ" & LastRow) If UCase(cell.Value) <> "PS" Then cell.EntireRow.Hidden = True End If Next End If If chkSTF = True Then For Each cell In Range("BK4:BK" & LastRow) If UCase(cell.Value) <> "STF" Then cell.EntireRow.Hidden = True End If Next End If If chkErgonomics = True Then For Each cell In Range("BL4:BL" & LastRow) If UCase(cell.Value) <> "Ergonomics" Then cell.EntireRow.Hidden = True End If Next End If Unload frmSort End Sub 

Вы фактически фильтруете, а не сортируете. Что вызывает вопрос, почему бы не просто позволить пользователю кнопку и диалог Filter Excel?

Чтобы ответить на ваш вопрос, ваш код будет работать, только если установлен флажок. Для каждого флажка, который проверен, ваш код скрывает строки для всех других категорий. Таким образом, только категория для последнего флажка будет содержать строки, показывающие

Вы можете попытаться изменить свою логику. Начните со всех скрытых строк и установите Hidden = False для любых строк, чья категория нажата.

Я хотел поделиться решением, которое предоставил мне @AlphaFrog, он отлично работает:

 Private Sub cmdSort_Click() Dim i As Long, rng As Range, arrCriteria As Variant Set rng = Rows(3) 'Headers arrCriteria = Array("Fire Extinguishers", "Chem", "FL", "Elec", "FP", _ "Lift", "PPE", "PS", "STF", "Ergonomics") Application.ScreenUpdating = False Rows.Hidden = False With Range("BC3:BL" & Range("A" & Rows.Count).End(xlUp).Row) For i = 1 To 10 If Me.Controls("CheckBox" & i) Then .AutoFilter i, arrCriteria(i - 1) Set rng = Union(rng, .SpecialCells(xlCellTypeVisible).EntireRow) .AutoFilter End If Next i .Parent.AutoFilterMode = False .EntireRow.Hidden = True rng.EntireRow.Hidden = False End With Application.ScreenUpdating = True Unload frmSort End Sub 

Ссылка на исходный ответ: http://www.ozgrid.com/forum/showthread.php?t=175539

  • Excel VBA UserForm - если не IsEmpty Then
  • Заполнение ComboBox со списком диаграмм на листе
  • Пользовательская форма VBA: доступ к различным диаграммам в зависимости от Combobox
  • Ошибка 424 «Требуемый объект» при попытке вычислить количество используемых строк
  • Использование Combobox для выбора и кнопки выбора в excel userform
  • Заполнение Combobox на второй пользовательской форме
  • Сохранение рабочих листов с формами в формате pdf
  • Отобразить строку текста в текстовом поле на основе множественного флажка в пользовательской форме
  • UserForm ComboBox
  • Gif не воспроизводится непрерывно в Webbrowser Control в форме Excel VBA, пока выполняется другой код
  • Использование операторов IF & AND с флажками в пользовательской форме
  • Давайте будем гением компьютера.