Note: The other languages of the website are Google-translated. Back to English

Как скрыть или показать столбцы на основе выбора раскрывающегося списка в Excel?

При использовании Excel вы можете скрыть или показать определенные столбцы на основе выбора раскрывающегося списка. Например, если вы выберете «Нет» в раскрывающемся списке, столбцы от C до I будут скрыты, но если вы выберете «Да», скрытые столбцы от C до I будут отображаться. См. Снимок экрана ниже.
В этой статье мы покажем вам метод VBA для скрытия или отображения столбцов на основе выбора раскрывающегося списка в Excel.

Скрыть или отобразить столбцы на основе выбора раскрывающегося списка в Excel


Скрыть или отобразить столбцы на основе выбора раскрывающегося списка в Excel

Как упоминалось выше, чтобы скрыть или показать столбцы от C до I на основе выбора раскрывающегося списка, сделайте следующее.

1. Сначала создайте раскрывающийся список с Да и Нет, которые вам нужны.

2. Затем нажмите другой + F11 для открытия Microsoft Visual Basic для приложений окно.

3. Дважды щелкните имя текущего открытого листа в VBAProject раздел, чтобы открыть редактор кода.

4. Затем скопируйте и вставьте ниже код VBA в редактор кода.

Код VBA: скрыть или отобразить столбцы на основе выбора раскрывающегося списка

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20180822
    If Target.Column = 2 And Target.Row = 3 Then
        If Target.Value = "No" Then
            Application.Columns("C:I").Select
            Application.Selection.EntireColumn.Hidden = True
        ElseIf Target.Value = "Yes" Then
            Application.Columns("C:I").Select
            Application.Selection.EntireColumn.Hidden = False
        End If
    End If
End Sub

Внимание: В приведенном выше коде Column = 2 и Row = 3 - это ссылка на ячейку в раскрывающемся списке, а диапазон C: I - это столбцы, которые вы хотите скрыть или показать, пожалуйста, измените их по своему усмотрению.

5. Нажмите другой + Q одновременно клавиши для выхода из Microsoft Visual Basic для приложений окно.

С этого момента, когда вы выбираете Нет в раскрывающемся списке, все указанные столбцы скрываются.

Но если вы выберете Да в раскрывающемся списке, все скрытые столбцы отобразятся немедленно.


Статьи по теме:


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (80)
Номинальный 5 из 5 · рейтинги 1
Этот комментарий был сведен к минимуму модератором на сайте
Привет, у меня есть рабочая тетрадь, и я пытаюсь разобраться с кодом VBA. У меня есть код, который, если я выберу из раскрывающегося списка page1, отобразит рабочий лист. Я ищу код, который я выбираю на странице 1 и выбираю диапазон 3-5 из раскрывающегося списка, он отображает рабочий лист и отображает 5 столбцов на скрытом рабочем листе. Это выполнимо?
Этот комментарий был сведен к минимуму модератором на сайте
получение кода ошибки при удалении введенного номера, могу ли я получить помощь с этим?
Этот комментарий был сведен к минимуму модератором на сайте
Изменил код следующим образом



Private Sub Worksheet_Change (ByVal Target As Range)


Если Target.Column = 3 и Target.Row = 2 и Target.Value = "Нет"

Затем


Приложение.Строки("3:90").Выбрать


Application.Selection.EntireRow.Hidden = Истина


Еще


Приложение.Строки("3:90").Выбрать


Application.Selection.EntireRow.Hidden = False


End If


End Sub




Но проблема, с которой я столкнулся, заключается в том, что я не могу ответить на вопрос да нет: так как выбираются все строки с 3 по 90, что не позволяет мне ответить на следующие вопросы
Этот комментарий был сведен к минимуму модератором на сайте
Уважаемый Харикумар,

Код, который вы предоставили, хорошо работает для меня. При выборе «Нет» из раскрывающегося списка (который находится в ячейке C2) строка 3:90 сразу скрывается. И выбор «Да» в раскрывающемся списке отобразит их все сразу. Извините, я не понимаю, что вы сказали о невозможности ответить да нет.
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за полезную статью.


Я хотел бы сделать этот макрос на шаг дальше: мне нужно именно это, но с оговоркой, что столбцы, которые мне нужно скрыть, не обязательно находятся в непрерывном диапазоне и могут быть идентифицированы определенной строкой внутри каждого столбца.

Я имею в виду что-то вроде этого:
если refcell = "a", то скрыть все столбцы с "a" в строке 7, иначе
если refcell = "b", то скрыть все столбцы с "b" в строке 7, иначе
если refcell = "c", то скрыть все столбцы с "c" в строке 7 иначе
показать все столбцы

Если это возможно, как будет выглядеть код VBA?
Этот комментарий был сведен к минимуму модератором на сайте
Привет! Вы нашли решение для этого? Ищу такой же :D
Этот комментарий был сведен к минимуму модератором на сайте
Дорогой Джон
Следующий код VBA может помочь вам решить проблему. При вводе «а» в ячейку A1 все столбцы с «а» в строке 7 будут автоматически скрыты. Это также работает при вводе b и c в ячейку A1.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg как диапазон
Dim xRgНайти как диапазон
Dim xRgUni как диапазон
Dim xFirstAddress как строка
On Error Resume Next
Приложение.ScreenUpdating = False
Строки(7).EntireColumn.Hidden = False
Если Целевой.Адрес = Диапазон("A1").Адрес Тогда
Установите xRg = Intersect (ActiveSheet.UsedRange, Rows (7))
Установить xRgFind = xRg.Find(Target.Value, , xlValues, xlWhole, , , True)
Если не xRgFind, то ничто
xFirstAddress = xRgFind.Address
Do
Установить xRgFind = xRg.FindNext(xRgFind)
Если xRgUni ничто, то
Установить xRgUni = xRgFind
Еще
Установить xRgUni = Application.Union(xRgUni, xRgFind)
End If
Цикл, пока (не xRgFind ничто) и (xRgFind.Address <> xFirstAddress)
End If
xRgUni.EntireColumn.Hidden = Истина
End If
Application.ScreenUpdating = True
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Дорогой Райан,
Пожалуйста, попробуйте следующий код VBA. При вводе «а» в ячейку A1 все столбцы с «а» в строке 7 будут автоматически скрыты. Это также работает при вводе b и c в ячейку A1.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg как диапазон
Dim xRgНайти как диапазон
Dim xRgUni как диапазон
Dim xFirstAddress как строка
On Error Resume Next
Приложение.ScreenUpdating = False
Строки(7).EntireColumn.Hidden = False
Если Целевой.Адрес = Диапазон("A1").Адрес Тогда
Установите xRg = Intersect (ActiveSheet.UsedRange, Rows (7))
Установить xRgFind = xRg.Find(Target.Value, , xlValues, xlWhole, , , True)
Если не xRgFind, то ничто
xFirstAddress = xRgFind.Address
Do
Установить xRgFind = xRg.FindNext(xRgFind)
Если xRgUni ничто, то
Установить xRgUni = xRgFind
Еще
Установить xRgUni = Application.Union(xRgUni, xRgFind)
End If
Цикл, пока (не xRgFind ничто) и (xRgFind.Address <> xFirstAddress)
End If
xRgUni.EntireColumn.Hidden = Истина
End If
Application.ScreenUpdating = True
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Кристал,
Я новичок в этом. Я не могу понять из вашего кода, как вы определяете a, b и c как значения в ячейке A1. В основном я делаю то, что делает ваш код, но мне нужно, чтобы значение A1 (или любой другой ячейки, которую я хочу использовать) было строкой.
Пример:
У меня есть таблица (диапазон ячеек), которая содержит 1 из 3 значений в строке 3. Значения ("Активно", "Неактивно" и "Закрыто"). Мне бы хотелось, чтобы все столбцы имели "Неактивно" или "Закрыто". " в строке 3, чтобы быть скрытым. Значение в строке 3 получено из функции ИНДЕКС/ПОИСКПОЗ, которая извлекается из другого листа в моей книге. На другом листе я выбираю 1 из 3 значений из раскрывающегося списка.

Как мне изменить этот код, чтобы он искал «Неактивно» или «Закрыто» в строке 3 и скрывал только эти столбцы?


Заранее большое спасибо!

Эдди
Этот комментарий был сведен к минимуму модератором на сайте
Дорогой Эдди,
Извините, я не могу помочь с этим. Вы можете задать свой вопрос на нашем форуме: https://www.extendoffice.com/forum.html чтобы получить больше поддержки от нашего специалиста по Excel.
Этот комментарий был сведен к минимуму модератором на сайте
Мне нужно использовать это для скрытия 14 столбцов поочередно на основе значения ячейки.
например - Если A1 = CAT, то скрыть столбцы от J до V

Если A1 = BAT, то скройте столбцы от I и от K до V.

Если A1 = HAT, то скройте столбцы I, J и L до P.

По сути, мои данные находятся в столбцах от I до V, и мне нужно скрыть столбцы из этого диапазона, кроме того, который выбран в опорной ячейке. и показать все, если в опорной ячейке выбрано «Все».

Я попытался использовать ту же формулу выше в цикле, но я получаю "ошибка компиляции -" Есть ли другая формула, которую мне нужно использовать?
Этот комментарий был сведен к минимуму модератором на сайте
Дорогой Ручи,
Извините, я не совсем понимаю вашу точку зрения: «В основном мои данные находятся в столбцах с I по V, и мне нужно скрыть столбцы из этого диапазона, кроме того, который выбран в ячейке ссылки. и показать все, если в опорной ячейке выбрано «Все».
Этот комментарий был сведен к минимуму модератором на сайте
Кто-нибудь может помочь:


Если я ввожу значение в ячейку A1 как «Нет», я хочу, чтобы столбцы D: E скрывались. и если я ввожу значение как «Да», я хочу, чтобы столбцы D: E отображались, а столбцы F: G скрывались
Этот комментарий был сведен к минимуму модератором на сайте
Уважаемый Аниш,
Этот код VBA может вам помочь. Пожалуйста, попробуйте. Спасибо за ваш комментарий.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRg как диапазон
Установите xRg = диапазон («A1»)
Если xRg.Address = Target.Address And Target.Value = "Нет", Тогда
Столбцы("D:E").EntireColumn.Hidden = True
ElseIf xRg.Address = Target.Address And Target.Value = "Да" Тогда
Столбцы("D:E").EntireColumn.Hidden = False
Столбцы("F:G").EntireColumn.Hidden = True
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Мне нужна помощь с макросом или формулой Excel. Кто-нибудь может помочь?
Этот комментарий был сведен к минимуму модератором на сайте
Мне нужна помощь с аналогичным макросом, но для указанных диапазонов ячеек, а не для всего столбца. Можно ли это сделать?
Этот комментарий был сведен к минимуму модератором на сайте
Дорогая Кара,
Вы имеете в виду «скрыть содержимое указанных диапазонов ячеек на основе значения ячейки»? Пожалуйста, опубликуйте свой вопрос с подробностями, чтобы помочь нам решить проблему.
Этот комментарий был сведен к минимуму модератором на сайте
Всем привет! У меня есть выбор из 10 элементов, и я пытаюсь показать только строки с 57 по 72, когда выбираю один из них. Я использую следующий код, но почему-то он не работает, и моя панель управления вообще не меняется. Однако, когда я что-то ввожу в случайную ячейку, страница перезагружается, и строки 57:72 становятся скрытыми. Но затем он остается одинаковым для всех моих вариантов выбора, и я не могу снова отобразить его с помощью выбора раскрывающегося списка. Могу ли я узнать, есть ли у кого-нибудь альтернативное предложение? Заранее спасибо!


Private Sub Worksheet_Change (ByVal Target As Range)

Если Target.Column = 2 и Target.Row = 3 и Target.Value = "1"

Затем Application.Rows("57:72").Select Application.Selection.EntireRow.Hidden = False

Еще Application.Rows("57:72").Select Application.Selection.EntireRow.Hidden = True

End If

End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Спасибо за код, если я хочу добавить третий вариант, каков синтаксис?
Этот комментарий был сведен к минимуму модератором на сайте
Я изменил этот код, чтобы скрыть строки вместо столбцов, и он работает, но с одной небольшой проблемой. У меня есть несколько списков проверки данных на одном листе, и когда я выбираю значение из этих других списков, все строки, указанные в моем коде, автоматически отображаются, даже если для целевой ячейки установлено значение «Нет». Почему это происходит и как я могу это исправить?
Этот комментарий был сведен к минимуму модератором на сайте
Дорогая Дженис,
Извините за ошибку, попробуйте новый код ниже. Спасибо за ваш комментарий.

Private Sub Worksheet_Change (ByVal Target As Range)
Если Target.Column = 2 и Target.Row = 3, тогда
Если Target.Value = "Нет" Тогда
Приложение.Столбцы("C:I").Выбрать
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "Да" Тогда
Приложение.Столбцы("C:I").Выбрать
Application.Selection.EntireColumn.Hidden = False
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Это именно то, что мне нужно сделать, но я не хочу, чтобы столбец выделялся, когда я скрываю/отображаю. Как я могу встроить код для перехода к следующей ячейке?
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за полезную статью. Я хотел бы сделать этот макрос на шаг дальше: мне нужно именно это, но столбцы, которые мне нужно скрыть/показать, не обязательно находятся в непрерывном диапазоне. Мои колонки варьируются от C до NC. Что я хочу, так это то, что если я выберу целевое значение 1, оно скроет AH до NC и отобразит C до AG, а когда я выберу целевое значение 2, оно скроет C до AG, а также BJ до NC, и отобразит AH до BI и так далее. на предмет целевого значения.
Этот комментарий был сведен к минимуму модератором на сайте
В основном мне нужно знать, как ссылаться на несколько диапазонов одновременно. Я пробовал, но выдает ошибку. вот смотри
Private Sub Worksheet_Change (ByVal Target As Range)
Если Target.Column = 2 и Target.Row = 4, тогда
Если Target.Value = "Январь" Тогда
Приложение.Столбцы("AH:NC").Выбрать
Application.Selection.EntireColumn.Hidden = True
ИначеЕсли Target.Value = " Январь " Тогда
Приложение.Столбцы("C:AG").Выбрать
Application.Selection.EntireColumn.Hidden = False

ElseIf Target.Value = "Февраль" Тогда
Application.Columns("C:AG, BJ:NC").Выбрать
Application.Selection.EntireColumn.Hidden = True
ИначеЕсли Target.Value = " Февраль " Тогда
Приложение.Столбцы("AH:BI").Выбрать
Application.Selection.EntireColumn.Hidden = False

End If
End If
End Sub

Примечание. Это работает для Target.Value = " January ", но для Target.Value = "February" высвечивает ошибку в этой строке => Application.Columns("C:AG, BJ:NC"). Выберите

Кроме того, когда он скрывается при выборе целевого значения, он не отображается при выборе другого целевого значения.
Этот комментарий был сведен к минимуму модератором на сайте
Привет Мария,
Ваш код был оптимизирован. Пожалуйста, попробуйте. Надеюсь, я смогу помочь.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRG As Range
Dim xHRow как целое число
Установить xRG = диапазон ("B4")
Если Not Intersect(Target, xRG) ничто, то
Если Target.Value = "Январь" Тогда
Application.Columns("AH:NC").Скрытый = Истина
Application.Columns("C:AG").Скрытый = Ложь
ElseIf Target.Value = "Февраль" Тогда
Application.Columns("C:AG").Скрытый = Истина
Application.Columns("BJ:NC").Скрытый = Истина
Application.Columns("AH:BI"). Скрытый = Ложь
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Мое выпадающее меню находится в ячейке B23. Если да, покажите, а если нет, то скройте строку 29. Это код, который я использую:

Private Sub Worksheet_Change (ByVal Target As Range)
'Обновлено Extendoffice 20180822
Если Target.Column = 2 и Target.Row = 23, тогда
Если Target.Value = "нет" Тогда
Приложение.Строка(29).Выбрать
Application.Selection.EntireRow.Hidden = Истина
ИначеЕсли Target.Value = "да" Тогда
Приложение.Строка(29).Выбрать
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub

Но я получаю ошибку времени выполнения 438 — объект не поддерживает это свойство или метод. Почему? Что-то не так в коде выше?

Заранее спасибо за помощь.
Этот комментарий был сведен к минимуму модератором на сайте
Привет Гюнтер,
Приведенный ниже код VBA может помочь вам решить проблему. Пожалуйста, попробуйте. Спасибо за ваш комментарий.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRG As Range
Dim xHRow как целое число
Установить xRG = диапазон ("B23")
xHRow = 29
Если Not Intersect(Target, xRG) ничто, то
Если Target.Value = "Нет" Тогда
Application.Rows(xHRow).Выбрать
Application.Selection.EntireRow.Hidden = Истина
ElseIf Target.Value = "Да" Тогда
Application.Rows(xHRow).Выбрать
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Кристал,


Надеюсь, вы поможете мне скрыть/показать несколько строк. Я хотел бы показать строки 63-73, когда в ячейке D51 выбрано ДА. Я использую следующее -


Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRG As Range
Dim xHRow как целое число
Установить xRG = диапазон ("D51")
xHRow = ("63:73")
Если Not Intersect(Target, xRG) ничто, то
Если Target.Value = "Нет" Тогда
Application.Rows(xHRow).Выбрать
Application.Selection.EntireRow.Hidden = Истина
ElseIf Target.Value = "Да" Тогда
Application.Rows(xHRow).Выбрать
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub



Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Габ,
Пожалуйста, примените приведенный ниже код VBA. Спасибо за ваш комментарий.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRG As Range
Dim xHRow как строка
Установить xRG = диапазон ("D51")
xHRow = "63:73"
Если Not Intersect(Target, xRG) ничто, то
Если Target.Value = "Нет" Тогда
Application.Rows(xHRow).Выбрать
Application.Selection.EntireRow.Hidden = Истина
ElseIf Target.Value = "Да" Тогда
Application.Rows(xHRow).Выбрать
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуй.

Я собираюсь скрыть всю строку со 118 по 120, если в раскрывающемся списке указано НЕТ, иначе эти строки будут показаны. Не могли бы вы мне помочь? Моя выпадающая ссылка на ячейку F-117.

Использование этого кода, но никаких действий не произошло.

Private Sub Worksheet_Change (ByVal Target As Range)
Если Target.Column = 6 и Target.Row = 117, тогда
Если Target.Value = "Нет" Тогда
Приложение.Строки("118:120").Выбрать
Application.Selection.EntireRow.Hidden = Истина
ElseIf Target.Value = "Да" Тогда
Приложение.Строки("118:120").Выбрать
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Расс Арнехо,
Я не уверен, правильно ли я это понимаю. «Ссылка на раскрывающуюся ячейку в F-117», означает ли это, что ячейка F117 содержит раскрывающийся список? Если это так, просто используйте в коде ссылку на ячейку F117. Весь сценарий VBA выглядит следующим образом. Пожалуйста, попробуйте.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20230106
Dim xRG As Range
Dim xHRow As String
Set xRG = Range("F117")
xHRow = "118:120"
If Not Intersect(Target, xRG) Is Nothing Then
If Target.Value = "No" Then
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = True
ElseIf Target.Value = "Yes" Then
Application.Rows(xHRow).Select
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Код, указанный для скрытия/отображения столбцов на основе значения, выбранного из раскрывающегося списка другого столбца, прекрасно работает. Спасибо. Но это работает только для одной строки.
Как применить это для остальной части выбранного количества строк в электронной таблице. Я понимаю, что нам, возможно, придется определить переменную для номера строки и в цикле увеличить ее. Но я не знаю его синтаксиса. Может ли кто-нибудь помочь с этим, пожалуйста?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Пожалуйста, попробуйте приведенный ниже код VBA. Надеюсь, это поможет.
Пожалуйста, измените диапазон, как вам нужно.

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRG As Range
Установите xRG = диапазон ("B3: B30")
Если Not Intersect(Target, xRG) ничто, то
Если Target.Value = "Нет" Тогда
Приложение.Столбцы("C:I").Выбрать
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "Да" Тогда
Приложение.Столбцы("C:I").Выбрать
Application.Selection.EntireColumn.Hidden = False
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо. Я использовал код, и он отлично работает, но когда я ввожу текст в ячейку ниже и нажимаю ввод, он автоматически перемещает курсор обратно в целевое поле. Есть ли способ обойти это?
Этот комментарий был сведен к минимуму модератором на сайте
Привет Грант,
Я пробовал, как вы упомянули, но не нашел той же проблемы. Можете ли вы сказать мне свою версию Excel? Спасибо за комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
Каждый столбец — это отдельный ученик (2 в этом примере A и B). У меня есть два раскрывающихся списка (на A1 и B1). У каждого есть «Пройдено», «Не пройдено» и «Выберите один» в качестве опции. Теперь мне удалось заставить его работать при выборе только одного раскрывающегося списка (либо A1, либо B1). Я хочу иметь возможность отображать поля, которые были скрыты A1, всякий раз, когда я выбираю что-то на B1. Цель состоит в том, чтобы выбрать вариант на A1 и заполнить оставшиеся строки. Затем выберите B1 и заполните оставшиеся строки ( независимо от выбора A1.

Спасибо!

Private Sub Worksheet_Change (ByVal Target As Range)

Если Intersect(Target, Range("A1:B2")) равно Nothing или Target.Cells.Count > 1, тогда
Exit Sub

ElseIf Range("A1").Value = "Выбрать один" Then
Строки("2:15").EntireRow.Hidden = False

ElseIf Range("A1").Value = "Пройдено" Тогда
Строки("7").EntireRow.Hidden = False
Строки("8:15").EntireRow.Hidden = Истина

ElseIf Range("A1").Value = "Ошибка" Тогда
Строки("7").EntireRow.Hidden = Истина
Строки("8:15").EntireRow.Hidden = False

ElseIf Range("B1").Value = "Выбрать один" Then
Строки("2:15").EntireRow.Hidden = False

ElseIf Range("B1").Value = "Пройдено" Тогда
Строки("7").EntireRow.Hidden = False
Строки("8:15").EntireRow.Hidden = Истина

ElseIf Range("B1").Value = "Ошибка" Тогда
Строки("7").EntireRow.Hidden = Истина
Строки("8:15").EntireRow.Hidden = False

End If

End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Извините, не могу вам в этом помочь. Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
Я получаю сообщение об ошибке xHRow = (14:24")

Я пытаюсь скрыть или показать несколько строк в зависимости от моего выбора C4. Можете ли вы помочь с тем, что я не так?

Private Sub Worksheet_Change (ByVal Target As Range)
Dim xRG As Range
Dim xHRow как диапазон
Установить xRG = диапазон ("C4")
xHRow = ("14:24")
Если Not Intersect(Target, xRG) ничто, то
Если Target.Value = "Вытянуто" Тогда
Application.Rows(xHRow).Выбрать
Application.Selection.EntireRow.Hidden = Истина
ElseIf Target.Value = "Заменено" Тогда
Application.Rows(xHRow).Выбрать
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Ошибка: Ошибка времени выполнения '91':
Переменная объекта или переменная блока не задана
Этот комментарий был сведен к минимуму модератором на сайте
Мне нужна помощь. Почему, когда я уже скопировал эту формулу в свой VBA и попытался воспроизвести ее, вся таблица скрыта, а не только часть столбца, который я хочу скрыть?
Большое спасибо за вашу помощь.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, Реза Г.
Код работает хорошо в моем случае. Не могли бы вы приложить скриншот диапазона вашей таблицы и код VBA после изменения? Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
Bonjour, j'ai le même problème...

Голосовой код VBA модифицирован:

Private Sub Worksheet_Change (ByVal Target As Range)
Если Target.Column = 3 And Target.Row = 3 And Target.Value = "Gestion", тогда
Приложение.Столбцы("D:E").Выбрать
Application.Selection.EntireColumn.Hidden = True

Еще

Если Target.Value = "Новое дело" Тогда
Приложение.Столбцы("D:E").Выбрать
Application.Selection.EntireColumn.Hidden = False

Еще

Если Target.Value = "Avenant" Тогда
Приложение.Столбцы("D:E").Выбрать
Application.Selection.EntireColumn.Hidden = False
End If
End If
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Я использовал код, чтобы отлично работать. Спасибо. Но когда я выбрал из раскрывающегося списка, он активен до последнего кода или переходит к последним данным столбца. Как выбирать выпадающий список каждый раз (столбец = 13 и Target.Row = 3 тогда) не перемещаться и может записывать данные в следующий столбец?
Спасибо.
Пример: Private Sub Worksheet_Change (ByVal Target As Range)
'Обновлено Extendoffice 20180822
' Если Target.Column = 13 и Target.Row = 3, тогда
Если Target.Column = 13 Then
Если Target.Value = "1: Да" Тогда
Приложение.Столбцы("N:O").Выбрать
Application.Selection.EntireColumn.Hidden = False
Приложение.Столбцы("P:S").Выбрать
Application.Selection.EntireColumn.Hidden = True
Приложение.Столбцы("V:Z").Выбрать
Application.Selection.EntireColumn.Hidden = True
Приложение.Столбцы("X:Z").Выбрать
Application.Selection.EntireColumn.Hidden = True
Приложение.Столбцы("AB:AK").Выбрать
Application.Selection.EntireColumn.Hidden = True
Приложение.Столбцы("AL").Выбрать
Application.Selection.EntireColumn.Hidden = False
Приложение.Столбцы("AM").Выбрать
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "2: Нет" Тогда
Приложение.Столбцы("N").Выбрать
Application.Selection.EntireColumn.Hidden = True
Приложение.Столбцы("O:Z").Выбрать
Application.Selection.EntireColumn.Hidden = False
Приложение.Столбцы("AB:AK").Выбрать
Application.Selection.EntireColumn.Hidden = True
Приложение.Столбцы("AL").Выбрать
Application.Selection.EntireColumn.Hidden = True
Приложение.Столбцы("AM").Выбрать
Application.Selection.EntireColumn.Hidden = False
ИначеЕсли Целевое.Значение = "" Тогда
Приложение.Столбцы("N:AN").Выбрать
Application.Selection.EntireColumn.Hidden = False
End If
End If
'Если Target.Column = 16 и Target.Row = 3, то
Если Target.Column = 16 Then
Если Target.Value = "Кошка" Тогда
Приложение.Столбцы("V:W").Выбрать
Application.Selection.EntireColumn.Hidden = True
ElseIf Target.Value = "Собака" Тогда
Приложение.Столбцы("V:W").Выбрать
Application.Selection.EntireColumn.Hidden = False
End If
End If
End Sub
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL