Страницы: 1
RSS
Выделить все пустые ячейки в умной таблице и применить очистку ячеек
 
Уважаемые форумчане, подскажите пожалуйста как оптимизировать код макроса?
В прикреплённых файлах макрос импортирует данные, а затем:
1. Включает Фильтр
2. Отфильтровывает пустые ячейки в 1-м столбце и выделяет их
3. Затем очищает выделенные ячейки командой Selection.ClearContents
затем выполянются такие же действия по 2-му столбцу и затем по 3-му
Вроде всё работает, но хотелось бы оптимизировать макрос.

По форумам узнал что есть возможность выделять пустые ячейки без фильтра через SpecialCells(xlCellTypeBlanks), но как применить не понимаю.
И ещё вот здесь один из продвинутых специалистов VBA предлагает какой-то хитрый метод:
Код
Sub ertert()
With Range("A1:F" & Cells(Rows.Count, 1).End(xlUp).Row)
    .Value = Application.Clean(.Value)
    'или даже так
    '.Value = Application.Trim(Application.Clean(.Value))
End With
End Sub
Но как применить его к умной таблице тоже не ясно.

P.S. Прикреплённые файлы должны лежать в одной папке
 
AndreiSMT, попробуйте
Код
Sub SelectNonBlanks()
Dim rng As Range
Set rng = Range("A1:A10")
  rng.SpecialCells(xlCellTypeBlanks).Select
End Sub
 
Никита Дворец, спасибо за внимание. Прописал так:
Set rng = Range("A1:C48")
но выделение происходит только в столбце A
Хотелось бы выделить пустые ячейки сразу во всех столбцах
 
AndreiSMT,

Объедините требуемые диапазоны через оператор Application.Union(Range1, Range2, ...), присвойте его rng и затем примените метод SpecialCells.
 
Попробовал вот так прописать:
Код
Sub SelectNonBlanks()
Dim tbl As ListObject
On Error Resume Next
Set tbl = ThisWorkbook.Worksheets("Заказ").ListObjects("tbl_Zakaz")
  With tbl.DataBodyRange
      .SpecialCells(xlCellTypeBlanks).Select
  End With
End Sub
Но пустые ячейки выделяются почему-то только в столбцах A, D и E
В столбцах B и C такой макрос почему-то не видит пустых ячеек
 
Никита Дворец, я в прикрепленном шаблоне закоментировал все функции фильтрации и очистки
и после импорта вижу что xlCellTypeBlanks в столбцах B и C не видит пустых ячеек.
Если вручную очистить пару ячеек в этих столбцах, тогда видит и выделяет их как положено

p.s. но в столбцах B и C достаточно пустых ячеек после импорта
Изменено: AndreiSMT - 30.09.2025 12:48:04
 
Странное желание, выделить пустые ячейки чтобы их очистить. Отчего очищать, они и так пустые, куда ещё пустее? Может быть надо очищать от не видимых символов? Но тогда надо выделять не пустые ячейки.  
 
gling, так дело в том что там нет вроде невидимых символов, но после импорта они почему то не считаются пустыми.
Дело в том что первый столбец не должен иметь ширину больше 10, что собственно и прописано в настройках листа
но в этом столбце после импорта есть длинные значения, которые не вмещаются в ширину столца, и если вручную очистить ячейки столбца B, тогда все значения столбца A начинают отображаться полностью
 
gling, если фильтром выделять пустые ячейки, то всё работает. Фильтр ведь считает их пустыми, а xlCellTypeBlanks почему-то не хочет.

gling, может у меня в самом импорте какая-то проблема? Можете глянуть?
 
Попробуйте вариант в файле, может быть подойдет?
Изменено: gling - 30.09.2025 20:09:35
 
gling,  8-0
Конечно же подойдёт. Спасибо большое!
Страницы: 1
Читают тему
Наверх