#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 не работает хорошо, для работы должен быть последовательный диапазон.