Можно ли использовать IsEmpty для ссылки на другой лист и скрыть столбец?

Можно ли использовать IsEmpty для ссылки на ячейку на другом листе, откуда вызывается макрос? Кроме того, можно ли скрыть столбец с запросом, если результат этого запроса равен True?

Вот что я создал до сих пор: Моя первая версия выглядела так:

If IsEmpty(L1) Then Columns("L").EntireColumn.Hidden = True Else Columns("L").EntireColumn.Hidden = False End If 

Достаточно просто. Но это работает только в том случае, если он уволен с рабочего листа, где я хочу, чтобы запрос / скрыть произошел. Когда я запускаю макрос из другого листа, он скрывает столбец на этом листе (конечно, duh).

Итак, после нескольких итераций и ошибок я добрался до этого:

 If IsEmpty(Sheets("Results").Cells(10, 1).Value) Then Worksheets("Results").Columns(10).EntireColumn.Hidden = True Else Worksheets("Results").Columns(10).EntireColumn.Hidden = False End If 

Это, по крайней мере, не вызывает ошибок в VBA. Он также делает большой приседания. : $ Я начинаю задаваться вопросом, возможно ли использовать IsEmpty на другом листе? Или команда EntireColumn.Hidden ? Кроме того, учитывая, что мне нужно запустить эту проверку на 9 столбцах, может быть, есть лучший способ, чем 9 операторов If / Then?

Чтобы уйти от цикла через строку 1 столбцов, используйте SpecialCells (xlCellTypeBlanks).

 dim blnks as range with workSheets("Results") with .range(.cells(1, "B"), .cells(1, "K")) .entirecolumn.hidden = false set blnks = .specialcells(xlCellTypeBlanks) if not blnks is nothing then blnks.entirecolumn.hidden = true end with end with 

По существу это отображает все 9 столбцов, а затем скрывает столбцы с пустыми ячейками в первой строке. Обратите внимание, что строка нулевой длины (например, "" ), возвращаемая формулой, не является тем же самым, что и истинно пустая ячейка.

Я думаю, что вы очень близки, просто у вас есть клетки, которые вводят неправильно:

 If IsEmpty(Sheets("Results").Cells(1, 10).Value) Then Worksheets("Results").Columns(10).EntireColumn.Hidden = True Else Worksheets("Results").Columns(10).EntireColumn.Hidden = False End If 

Кроме того, как указано в комментариях, вы можете создать цикл для проверки многих столбцов:

 Dim i As Integer Dim maxi As Integer i = 1 maxi = 20 While i < maxi If IsEmpty(ThisWorkbook.Worksheets("Results").Cells(1, i)) Then Worksheets("Results").Columns(i).EntireColumn.Hidden = True Else Worksheets("Results").Columns(i).EntireColumn.Hidden = False End If i = i + 1 Wend 
Interesting Posts

Цвет фона диаграммы Excel

Ошибка при создании excel из C #

От массива до массива в диапазон

Использование расширенного фильтра в Excel для фильтрации длинного списка с помощью списка уничтожителей

Формула перетаскивания VBA слева направо

Поиск слова в диапазоне и вставка тех ячеек, которые содержат слово в столбце

Общий динамический массив

Изменение цвета ячейки на основе большего значения между двумя столбцами – Excel 2010

Список проверки данных Excel с использованием формулы с фильтрацией

Сделать excel vba вставить произвольное количество строк данных между строками на основе пользовательских критериев

Присоединение файла переменной к электронной почте, созданной VBA

Как я могу избежать знака доллара ('$') в формуле Excel?

Код VBA для изменения формулы

Как найти несколько значений в столбце

Использование VBA в Excel для сортировки таблицы без имени таблицы

Давайте будем гением компьютера.