Попытка отобразить дополнительный столбец, если какая-либо ячейка в диапазоне соответствует критериям

Моя электронная таблица выставляется с повторяющимися строками для ручной проверки данных. Столбец «I» содержит выпадающее меню с помощью функции «Проверка данных» с тремя параметрами. Я пытаюсь сохранить дополнительную колонку «K» скрытой, если только (редкий) случай, когда опция «N / A» выбрана из раскрывающегося списка.

Private Sub Worksheet_Change(ByVal Target As Range) If Columns("K").EntireColumn.Hidden = True Then If Target.Value = "N/A" Then Act3 Else Act4 End If Else Act4 End If End Sub Sub Act3() Columns("K").EntireColumn.Hidden = False End Sub Sub Act4() Columns("K").EntireColumn.Hidden = True End Sub 

Мой код может быть немного грубым, но он по крайней мере отображает столбец при выборе правильных критериев. Моя проблема в том, что если другой ячейке присваивается выбор, который не требует дополнительного столбца, он снова скрывает столбец. Что мне не хватает? Есть функция, которая позволяет что-то по строкам:

'Если любой в диапазоне затем'

Попробуйте добавить мою функцию AnyNA. Он проходит через всю вашу колонку, чтобы проверить наличие N / A и не скрывать, когда они найдены.

Кажется, вы только хотите рассмотреть вопрос о сокрытии, если он не скрыт и наоборот, поэтому я оптимизировал для вас. Кроме того, для ясности удалены избыточные «= True» и изменены подзаголовки на «Скрыть» и «Показать».

 Private Sub Worksheet_Change(ByVal Target As Range) If Columns("K").EntireColumn.Hidden And Target.Value = "N/A" Then Unhide ElseIf Not Columns("K").EntireColumn.Hidden And Not AnyNA Then Hide End If End Sub Private Function AnyNA() As Boolean For Row = 1 To Range("J" & Rows.Count).End(xlUp).Row If Range("J" & Row).Value = "N/A" Then AnyNA = True Exit Function End If Next AnyNA = False End Function Sub Unhide() Columns("K").EntireColumn.Hidden = False End Sub Sub Hide() Columns("K").EntireColumn.Hidden = True End Sub 

С помощью @Sean Scott я нашел решение:

  Sub Worksheet_Change(ByVal Target As Range) If Columns("K").EntireColumn.Hidden Then If Target.Value = "N/A" Then UnhideDocs End If ElseIf Not Columns("K").EntireColumn.Hidden And Not Target.Value = "N/A" Then HideDocs End If End Sub Function AnyNA() As Boolean For Row = 1 To Range("K" & Rows.Count).End(xlUp).Row If Range("K" & Row).Value = "N/A" Then AnyNA = True End If Next AnyNA = False End Function Sub UnhideDocs() Columns("K").EntireColumn.Hidden = False End Sub Sub HideDocs() Columns("K").EntireColumn.Hidden = True End Sub 
  • excel - if и statement внутри iferror с индексом small row nest
  • Оператор Excel IF
  • Итерация через заполненные строки, сопоставление на основе критериев, добавление значения в конкретную ячейку на другом листе в Excel с использованием VBA
  • VLOOKUP - IF Statement - Column Compare - ДА или НЕТ результата
  • Как написать многоядерные сопоставляемые ячейки VBA Если заявление в Excel
  • Копирование вложенной функции if
  • Эксел-переключатель 2 ячейки в зависимости от значения
  • Как рассчитать сумму на основе нескольких If в Excel?
  • Вложенный оператор IF возвращает значение #VALUE
  • Вложенный оператор IF возвращает false
  • Функции Excel - IF и ПОИСК
  • Interesting Posts

    Изображение VBA Center в объединенных ячейках

    Как указать переменные в Excel

    Возьмите определенные строки из файла csv и поместите в файл excel с помощью python

    Как получить указатель на активную книгу В настройке vb .net excel document (не добавлять)

    Вставить таблицу в powerpoint в sharepoint

    Загрузка файла Excel в ASP.NET

    Как вводить данные в определенные ячейки на листе Excel с использованием формы VBA?

    Развертывание надстроек, сохраненных в SharePoint на нескольких компьютерах

    vba справочная книга, если активные и последние 7 символов имени файла содержат x?

    Как удалить повторяющиеся записи и сконсолидировать данные Excel 2013

    Скрыть пустые ячейки в столбце excel (NON EXPENSIVE – вычислительное время)

    Очистка списка URL-адресов

    Вставить одно и то же изображение в Excel с использованием EPplus

    Работает для .Formula, но не для .FormulaArray

    «Данная ColumnMapping не соответствует ни одному столбцу в источнике или получателе» при импорте Excel в SQL Server с использованием C #

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