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

Как скрыть или отобразить конкретный лист на основе значения ячейки на другом листе?

Есть ли у нас какие-либо способы скрыть или отобразить конкретную вкладку рабочего листа на основе содержимого ячейки на другом листе? Например, когда я ввожу текст «Да» в ячейку G1 листа Sheet2, я хочу, чтобы Sheet1 был скрыт, а когда я ввожу «Нет», Sheet1 должен отображаться сразу. Как я мог решить эту проблему в Excel?

Скрыть или отобразить конкретную вкладку рабочего листа на основе значения ячейки с кодом VBA


стрелка синий правый пузырь Скрыть или отобразить конкретную вкладку рабочего листа на основе значения ячейки с кодом VBA

Чтобы скрыть или отобразить конкретную вкладку рабочего листа на основе значения ячейки на другом листе, следующий код VBA может оказать вам услугу, пожалуйста, сделайте следующее:

1. Перейдите на рабочий лист, содержащий значение ячейки, на основе которого вы хотите скрыть другой лист.

2. Щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код, в выскочившем Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустое окно модуля, см. снимок экрана:

Код VBA: скрыть или скрыть вкладку рабочего листа на основе значения ячейки:

Private Sub Worksheet_Change(ByVal Target As Range)
If [G1] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If
End Sub

doc скрыть вкладку на основе значения ячейки 1

Примечание: В приведенном выше коде G1 и Да - это ячейка и содержимое ячейки, на котором вы хотите основываться, и Sheet1 - это конкретный лист, который вы хотите скрыть или показать. Вы можете изменить их по своему усмотрению.

3. Затем сохраните и закройте этот код, когда вы вводите «Нет» или другой текст в ячейку G1, Sheet1 скрывается, но если вы вводите «Да» в ячейку, Sheet1 отображается сразу, см. Снимки экрана:

doc скрыть вкладку на основе значения ячейки 2
1
doc скрыть вкладку на основе значения ячейки 3

 


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

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

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

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

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно

 

Сортировать комментарии по
Комментарии (23)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте
Спасибо за совет. Мне нужно сделать тот же сценарий, но не только в одной ячейке (в данном случае G1), а во всех ячейках столбца G. Я пробовал с «Диапазон», но это не сработало.

Private Sub Worksheet_Change (ByVal Target As Range)
Если Диапазон("X2:X100") = "" Тогда
Sheets("ИЗМЕРЕНИЯ НА ОСНОВЕ ЗАДАЧ ЕС").Visible = False
Еще
Sheets("ИЗМЕРЕНИЯ НА ОСНОВЕ ЗАДАЧ ЕС").Visible = True
End If
End Sub


заранее спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Есть ли шанс, что на это был дан ответ? Я также сталкиваюсь с этим сценарием, когда в игру вступает целый диапазон вместо одной ячейки... Я использовал то же самое кодирование с теми же результатами.
Этот комментарий был сведен к минимуму модератором на сайте
Я сделал 2 рабочих листа следующим образом:
Private Sub Worksheet_Change (ByVal Target As Range)
Если [C20] = "Да" Тогда
Листы ("лист1"). Видимый = Истина
Еще
Листы ("лист1"). Видимый = Ложь
End If
Если [C22] = "Да" Тогда
Листы ("лист2"). Видимый = Истина
Еще
Листы ("лист2"). Видимый = Ложь
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Очень полезно!
Этот комментарий был сведен к минимуму модератором на сайте
Я хочу узнать, можете ли вы помочь с моей проблемой. По сути, у меня был точно такой же код на листе, который я использую, но с функцией или, поэтому ответ может быть «да» или «правда». Однако лист, который скрывается/отображается, иногда снова скрывается по неизвестным причинам. Он будет отображаться, когда я наберу «да», но когда я пойду использовать его позже, он снова будет скрыт, даже если значение ячейки по-прежнему «да». Любая идея, почему это может происходить и/или как это исправить?
Код для справки:
Private Sub Worksheet_Change(ByVal Target As Range) 'Скрывает/отображает страницу калибровки
Если [B18] = "Да" или Target.Value = "True", тогда
Sheets("XXX Verification").Visible = True
Еще
Sheets("XXX Verification").Visible = False
End If

Этот комментарий был сведен к минимуму модератором на сайте
У меня есть рабочая книга с несколькими именованными вкладками, связанными с индексным листом спереди. Пользователь может выбрать листы, которые он хочет использовать, установив флажок рядом с именем листа — пустой, Н/Д или Да (раскрывающийся список). Есть ли способ адаптировать этот код, чтобы лист был виден, если флажок пуст или содержит «Да», но не виден, если флажок содержит «Н/Д».
Я пытался, но недостаточно знаю о VBA, чтобы заставить его работать. Спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Я хочу скрыть или показать листы на основе значения ячейки (Да/Нет). Значения находятся в таблице (tblFileContents) и столбце D4: D25, а имя листа — в формате A4: A25 на листе. . Порядок элементов можно изменить. У вас есть ссылка на пример, который позволил бы мне это сделать?
Этот комментарий был сведен к минимуму модератором на сайте
У меня такая же проблема, и кто-то еще предложил решение.
Создайте таблицу (отформатируйте как таблицу) с 2 столбцами, назовите левый столбец Листы для отображения / скрытия, правый столбец зависит от вас. Поместите все имена листов в левый столбец.
Затем выберите View Code для этой вкладки и введите Dim Changed As Range, c As Range, rMTS As Range.
Dim i As Long
Dim bShowAll как логическое значение

Установите rMTS = Range("TblShowHide[Отметить для отображения]")
Set Changed = Intersect (Цель, rMTS)
Если не изменилось, значит ничего, тогда
bShowAll = Len(rMTS.Cells(1).Value) > 0
On Error Resume Next
Для i = 2 To rMTS.Rows.Count
Sheets(Range("TblShowHide[Show/Hide Sheets]").Cells(i).Value).Visible = IIf(bShowAll, True, Len(rMTS.Cells(i).Value) > 0)
Затем я
По ошибке GoTo 0
End If
End Sub


Этот комментарий был сведен к минимуму модератором на сайте
Я попробую. Большое спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Не уверен, что мне нужно изменить, но это не сработало для меня.
Этот комментарий был сведен к минимуму модератором на сайте
Привет,
да, у меня есть пример, который я прикрепил здесь. Переименуйте файл в example.xlsm (он не заархивирован, но пришлось переименовать для загрузки)
На вкладке меню есть таблица с различными названиями вкладок, сделайте x или любой другой символ, чтобы отобразить вкладку, если вы удалите символ, вкладка скроется.
надеюсь, это поможет
Этот комментарий был сведен к минимуму модератором на сайте
Он содержит несколько элементов, но не файл excel.
Этот комментарий был сведен к минимуму модератором на сайте
Я хочу иметь меню/оглавление в качестве моего первого рабочего листа и на основе ответов Да/Нет - появляются определенные рабочие листы, т.е. становится видимым более 1.
Я изо всех сил пытаюсь вывести несколько рабочих листов на основе приведенного выше кода.
Могу ли я использовать функцию И, например, если ячейка X = «Да», то сделать лист Y видимым, а лист Z и лист K?
Любые советы очень приветствуются.
С уважением
Хелен
Этот комментарий был сведен к минимуму модератором на сайте
А я вот не могу понять, как такое сделать в гугл таблицы именно?
Этот комментарий был сведен к минимуму модератором на сайте
Привет друг,

Вы можете открыть новый лист Google, добавить новый лист, чтобы были «Лист1» и «Лист2», а затем перейти в «Инструменты»> «Редактор сценариев». В редакторе вставьте следующее.

функция моя функция () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
вар лист1 = ss.getSheetByName("Лист1");
вар лист2 = ss.getSheetByName("Лист2");

переменная ячейка1 = лист1.getRange('B2');

если (cell1.getValue() == 2) {
лист2.скрытьлист();
}

если (cell1.getValue() == 3) {
лист2.showSheet();
}
}

Пожалуйста, попробуйте.

С уважением,
Мэнди
Этот комментарий был сведен к минимуму модератором на сайте
Этот код отлично работает, однако у меня есть 42 переменные для 70 листов, поэтому этот код становится очень длинным и перестает работать. Есть ли способ сделать этот код разделами, чтобы не превышать размер кода, который может обрабатывать VBA? Или мне нужно разделить их на два отдельных excel?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Лиз
К сожалению, в настоящее время нет хорошего способа решить вашу проблему.
Этот комментарий был сведен к минимуму модератором на сайте
У меня есть значение в ячейке B1, которое, если да, показывает лист1, но также и значение в B2, то есть, если да, показывает лист2 и т. д. и т. д., он скрывает/отображает последний лист в порядке, но не остальные, как я могу сказать, что 10 значений отображаются 10 разных листов? Благодарность
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Энди,
Чтобы решить вашу проблему, примените следующий код:
Private Sub Worksheet_Change(ByVal Target As Range)
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If
If [B3] = "Yes" Then
Sheets("Sheet2").Visible = True
Else
Sheets("Sheet2").Visible = False
End If
If [B4] = "Yes" Then
Sheets("Sheet3").Visible = True
Else
Sheets("Sheet3").Visible = False
End If
If [B5] = "Yes" Then
Sheets("Sheet4").Visible = True
Else
Sheets("Sheet4").Visible = False
End If
If [B6] = "Yes" Then
Sheets("Sheet5").Visible = True
Else
Sheets("Sheet5").Visible = False
End If
End Sub

Внимание: В приведенном выше коде вам просто нужно несколько раз скопировать приведенные ниже сценарии и изменить ссылку на ячейку и имя листа на свои собственные.
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If


Пожалуйста, попробуйте, надеюсь, это поможет вам!
Этот комментарий был сведен к минимуму модератором на сайте
У меня возникла проблема, когда я хочу, чтобы вкладка отображалась для диапазона значений, а не только для ДА или НЕТ. Когда я пытаюсь повторить оператор IF в подразделе, он выдает ошибку, а когда я пытаюсь перечислить несколько значений в операторе if, я получаю сообщение об ошибке. Любые идеи?

Похоже, мне нужно использовать оператор IF/OR, но я не уверен, как это будет работать.

Private Sub Worksheet_Change (ByVal Target As Range)
Если [К6] = "ВС 1", "ВС 2", "ВС 3", ВС 4" Тогда
Листы("Страница6").Visible = True
Еще
Листы("Страница6").Visible = False
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, Маргарет,
Чтобы решить вашу проблему, примените приведенный ниже код, вы должны использовать Или, чтобы присоединиться к условиям.
Private Sub Worksheet_Change(ByVal Target As Range)
If [K6] = "VS 1" Or [K6] = "VS 2" Or [K6] = "VS 3" Or [K6] = "VS 4" Then
Sheets("Page6").Visible = True
Else
Sheets("Page6").Visible = False
End If
End Sub

Пожалуйста, попробуйте, надеюсь, это поможет вам!
Этот комментарий был сведен к минимуму модератором на сайте
Skyyang - это сработало отлично. Спасибо за быстрый ответ!
Этот комментарий был сведен к минимуму модератором на сайте
Я пытаюсь использовать это, но появляется «ошибка компиляции - не удается найти проект или библиотеку» и выделяется ячейка, в которой находится раскрывающийся список «Да/Нет». Я думаю, это может быть связано с тем, что это объединенная ячейка, есть ли способ обойти это?
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

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

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