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

Як приховати або показати конкретний аркуш на основі значення комірки в іншому аркуші?

Чи існують для нас способи приховати або показати певну вкладку робочого аркуша на основі вмісту комірки на іншому аркуші? Наприклад, коли я ввожу текст «Так» у комірку G1 аркуша2, я хочу, щоб аркуш1 був прихований, а коли я вводжу «ні», аркуш1 відображався відразу. Як я міг вирішити цю проблему в 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, Аркуш1 прихований, але якщо Ви введете “Так” у комірку, Аркуш1 відображається одразу, див. Скріншоти:

doc сховати вкладку на основі значення комірки 2
1
doc сховати вкладку на основі значення комірки 3

 


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

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

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці

 

Коментарі (23)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Привіт
Дякую за підказку. Мені потрібно зробити той самий сценарій, але не лише для однієї клітинки (у цьому випадку G1), а для всіх клітинок стовпця G. Я спробував із «Діапазоном», але це не спрацювало.

Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Якщо діапазон("X2:X100") = "" Тоді
Таблиці ("ВИМІРЮВАННЯ НА ЗАДАЧІ ЄС"). Видно = Невірно
Ще
Таблиці ("ВИМІРЮВАННЯ НА ЗАДАЧІ ЄС"). Видно = Правда
End If
End Sub


Заздалегідь спасибі
Цей коментар був мінімізований модератором на сайті
Чи є можливість отримати відповідь? Я також стикаюся з цим сценарієм, коли в гру вступає цілий діапазон замість однієї клітинки... Я використовував те саме кодування з тими ж результатами.
Цей коментар був мінімізований модератором на сайті
Я зробив 2 робочі аркуші таким чином:
Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Якщо [C20] = "Так", Тоді
Sheets("sheet1").Visible = True
Ще
Sheets("sheet1").Visible = False
End If
Якщо [C22] = "Так", Тоді
Sheets("sheet2").Visible = True
Ще
Sheets("sheet2").Visible = False
End If
End Sub
Цей коментар був мінімізований модератором на сайті
Дуже корисний!
Цей коментар був мінімізований модератором на сайті
Я хочу дізнатися, чи можете ви допомогти з моєю проблемою. У мене був по суті цей точний код на аркуші, який я використовую, але з функцією або, тому відповідь може бути "так" або "правда". Однак аркуш, який ховається/розкривається, іноді знову ховається з невідомих причин. Він відображатиметься, коли я вводжу так, але коли я буду використовувати його пізніше, він знову приховується, навіть якщо значення комірки все ще є так. Маєте уявлення, чому це може статися, та/або як це виправити?
Код для довідки:
Private Sub Worksheet_Change(ByVal Target As Range)'Приховує/показує сторінку калібрування
Якщо [B18] = "Так" або Target.Value = "Істина", Тоді
Sheets("XXX Verification").Visible = True
Ще
Sheets("XXX Verification").Visible = False
End If

Цей коментар був мінімізований модератором на сайті
Привіт. У мене є робоча книга з кількома іменованими вкладками, пов’язаними з індексним аркушем спереду. Користувач може вибрати аркуші, які він хоче використовувати, поставивши прапорець біля назви аркуша – порожній, Н/Д або Так (розкривний список). Чи є спосіб адаптувати цей код, щоб аркуш був видимим, якщо прапорець порожній або містить «Так», але не був видимим, якщо прапорець містить «Н/Д».
Я пробував, але не знаю достатньо про VBA, щоб це запрацювало. Спасибі
Цей коментар був мінімізований модератором на сайті
Я хочу приховати або показати аркуші на основі значення комірки (Так/Ні). Значення знаходяться в таблиці (tblFileContents) і в стовпці D4:D25, а ім’я аркуша – у форматі A4:A25 на аркуші . Порядок елементів можна змінити. Чи є у вас посилання на приклад, який дозволив би мені це зробити?
Цей коментар був мінімізований модератором на сайті
У мене така ж проблема, і хтось інший надав рішення.
Створіть таблицю (формат у вигляді таблиці) з 2 стовпцями, назвіть лівий стовпець Листи, які потрібно відобразити/приховати, правий стовпець вирішувати вам. Помістіть усі назви аркушів у лівий стовпець
Потім виберіть Переглянути код для цієї вкладки та введіть Dim Changed As Range, c As Range, rMTS As Range
Dim i As Long
Dim bShowAll як Boolean

Встановіть rMTS = Range("TblShowHide[Mark to Show]")
Набір змінено = перетинатися (ціль, rMTS)
Якщо не змінено, то нічого
bShowAll = Len(rMTS.Cells(1).Value) > 0
On Error Resume Next
Для i = 2 До 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», а потім перейдіть до «Інструменти» > «Редактор скриптів». У редакторі вставте наступне.

функція myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("Аркуш1");
var sheet2 = ss.getSheetByName("Аркуш2");

var cell1 = sheet1.getRange('B2');

якщо (cell1.getValue() == 2) {
sheet2.hideSheet();
}

якщо (cell1.getValue() == 3) {
sheet2.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 у sub, це видає мені помилку, а коли я намагаюся перерахувати кілька значень у операторі if, я отримую помилку. Є ідеї?

Майже здається, що мені потрібно використовувати оператор IF/OR, але я не знаю, як це буде працювати.

Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Якщо [K6] = "VS 1", "VS 2", "VS 3", VS 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 - це спрацювало ідеально. Дякуємо за Вашу швидку відповідь!
Цей коментар був мінімізований модератором на сайті
Я намагаюся використати це, але з’являється «помилка компіляції — не вдається знайти проект або бібліотеку» та підсвічується клітинка, де розташовано спадне меню «Так/Ні». Я думаю, що це може бути пов’язано з тим, що це об’єднана комірка, чи можна якось обійти це?
There are no comments posted here yet
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL