Специальные ячейки(xlCellTypeVisible) внезапно перестали работать?

#excel #vba

Вопрос:

Я не знаю, почему специальные ячейки(xlCellTypeVisible) внезапно перестали работать для меня сегодня, я работал с ними весь день, и они делали именно то, что я ожидал, однако внезапно они перестали работать, и теперь простой код, который возвращает значение ячейки в отфильтрованной таблице, возвращает значение отфильтрованной ячейки. И когда я хочу выбрать отфильтрованную таблицу, теперь она выбирает всю таблицу (включая отфильтрованные строки).

 Set bookprincipal = ActiveWorkbook.Worksheets("Sheet1")
Set Tabla = bookprincipal.ListObjects("MainTable")
Set rangotablafiltrada = Tabla.DataBodyRange.SpecialCells(xlCellTypeVisible)

   Debug.Print rangotablafiltrada(3, 75)
   rangotablafiltrada.SpecialCells(xlCellTypeVisible).Select
 

Комментарии:

1. Как вы видите, что выбрана вся таблица ? Он не должен этого делать. Пожалуйста, попробуйте добавить следующий тестовый код после вашей последней строки кода? Debug.Print Selection.Address, Tabla.DataBodyRange.Address . В чем он возвращается Immediate Window ? По тому же адресу? Я не могу в это поверить…

2. Вы пробовали заменить ActiveWorkbook на ThisWorkbook , если макрос находится в той же книге, что и ваши данные ? Возможно, у вас открыто несколько рабочих книг, и VBA берет данные не из того wb.

3. Какую версию Excel вы используете? до XL2010 вы не могли использовать специальные ячейки, когда было более 8192 областей

4. Почему ты звонишь SpecialCells дважды?

5. Спасибо, ребята, я нашел проблему. Похоже, что перед фильтрацией таблицы по столбцу сначала нужно отсортировать этот столбец, иначе последующие строки будут выглядеть так: 12, 48, 120, 240…, однако, когда он сначала сортируется, а затем фильтруется, строки нумеруются последовательно: 1, 2, 3, 4… Похоже, что если диапазон «разделен», xlCellTypeVisible не работает хорошо, для работы должен быть последовательный диапазон.