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

Jak ukryć lub odkryć określony arkusz roboczy na podstawie wartości komórki w innym arkuszu?

Czy są jakieś metody, dzięki którym możemy ukryć lub odkryć określoną kartę arkusza roboczego na podstawie zawartości komórki w innym arkuszu? Na przykład, kiedy wprowadzę tekst „Tak” w komórce G1 arkusza Arkusz2, chcę, aby Arkusz1 był ukryty, a kiedy wpisuję „Nie”, Arkusz1 był wyświetlany od razu. Jak mogę rozwiązać ten problem w programie Excel?

Ukryj lub odkryj określoną kartę arkusza na podstawie wartości komórki z kodem VBA


strzałka niebieski prawy bąbelek Ukryj lub odkryj określoną kartę arkusza na podstawie wartości komórki z kodem VBA

Aby ukryć lub odkryć określoną kartę arkusza na podstawie wartości komórki w innym arkuszu, poniższy kod VBA może wyświadczyć ci przysługę, wykonaj następujące czynności:

1. Przejdź do arkusza zawierającego wartość komórki, na podstawie której chcesz ukryć inny arkusz.

2. Kliknij prawym przyciskiem myszy kartę arkusza i wybierz Wyświetl kod, w wyskoczył Microsoft Visual Basic for Applications okno, skopiuj i wklej następujący kod w pustym oknie modułu, patrz zrzut ekranu:

Kod VBA: Ukryj lub ukryj kartę arkusza na podstawie wartości komórki:

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 ukryj kartę na podstawie wartości komórki 1

Uwaga: W powyższym kodzie G1 i tak to komórka i zawartość komórki, na której chcesz bazować, i Sheet1 to konkretny arkusz, który chcesz ukryć lub odkryć. Możesz je zmienić według swoich potrzeb.

3. Następnie zapisz i zamknij ten kod, gdy wpiszesz „Nie” lub inny tekst w komórce G1, Arkusz1 zostanie ukryty, ale jeśli wpiszesz „Tak” w komórce, Arkusz1 zostanie wyświetlony od razu, zobacz zrzuty ekranu:

doc ukryj kartę na podstawie wartości komórki 2
1
doc ukryj kartę na podstawie wartości komórki 3

 


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół

 

Sortuj komentarze według
Komentarze (23)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć
Dziękuję za wskazówkę. Muszę zrobić ten sam scenariusz, ale nie tylko w jednej komórce (w tym przypadku G1), ale we wszystkich komórkach kolumny G. Próbowałem z „Zakresem”, ale to nie zadziałało.

Prywatny Sub Worksheet_Change (ByVal Target As Range)
Jeśli zakres("X2:X100") = "" Wtedy
Arkusze ("POMIARY NA PODSTAWIE ZADAŃ UE"). Widoczny = Fałsz
Więcej
Arkusze ("POMIARY NA PODSTAWIE ZADAŃ UE"). Widoczny = Prawda
End If
End Sub


Z góry dziękuję
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy jest szansa, że ​​została udzielona odpowiedź? Wpadam również w ten scenariusz, w którym w grę wchodzi cały zakres zamiast tylko jednej komórki ... Użyłem tego samego kodowania z tymi samymi wynikami.
Ten komentarz został zminimalizowany przez moderatora na stronie
Zrobiłem 2 arkusze w następujący sposób:
Prywatny Sub Worksheet_Change (ByVal Target As Range)
Jeśli [C20] = „Tak” Wtedy
Arkusze("arkusz1"). Widoczny = Prawda
Więcej
Arkusze("arkusz1"). Widoczny = Fałsz
End If
Jeśli [C22] = „Tak” Wtedy
Arkusze("arkusz2"). Widoczny = Prawda
Więcej
Arkusze("arkusz2"). Widoczny = Fałsz
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Bardzo pomocne!
Ten komentarz został zminimalizowany przez moderatora na stronie
Chcę zobaczyć, czy możesz pomóc w rozwiązaniu mojego problemu. Zasadniczo miałem ten dokładny kod w arkuszu, którego używam, ale z funkcją lub, więc odpowiedź może brzmieć „tak” lub „prawda”. Jednak arkusz, który jest ukrywany/odkrywany, czasami z nieznanych powodów ponownie się ukrywa. Zostanie ujawnione, gdy wpiszę tak, ale gdy pójdę z niego później skorzystać, zostanie ponownie ukryte, mimo że wartość komórki nadal jest tak. Masz pomysł, dlaczego tak się dzieje i/lub jak to naprawić?
Kod referencyjny:
Private Sub Worksheet_Change(ByVal Target As Range)'Ukryj/odkrywa stronę kalibracji
Jeśli [B18] = „Tak” Lub Target.Value = „Prawda” Wtedy
Arkusze("Weryfikacja XXX"). Widoczny = Prawda
Więcej
Arkusze("Weryfikacja XXX"). Widoczne = Fałsz
End If

Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Mam skoroszyt z wieloma nazwanymi zakładkami połączonymi z arkuszem indeksu z przodu. Użytkownik może wybrać arkusze, których chce użyć, zaznaczając pole obok nazwy arkusza - pusty, N/A lub Tak (lista rozwijana). Czy istnieje sposób dostosowania tego kodu, aby arkusz był widoczny, jeśli pole wyboru jest puste lub zawiera „Tak”, ale nie jest widoczny, jeśli pole wyboru zawiera „Nie dotyczy”.
Próbowałem, ale nie wiem wystarczająco dużo o VBA, aby to działało. Dzięki
Ten komentarz został zminimalizowany przez moderatora na stronie
Chcę ukryć lub odkryć arkusze na podstawie wartości komórki (tak/nie). Wartości znajdują się w tabeli (tblFileContents) i kolumnie D4:D25, a nazwa arkusza jest w formacie A4:A25 w arkuszu . Kolejność elementów można zmienić. Czy masz odniesienie do przykładu, który pozwoliłby mi to zrobić?
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam ten sam problem i ktoś inny dostarczył rozwiązanie.
Utwórz tabelę (formatuj jako tabelę) z 2 kolumnami, nazwij lewą kolumnę Arkusze do pokazania/ukrycia, prawa kolumna zależy od Ciebie. Umieść wszystkie nazwy arkuszy w lewej kolumnie
Następnie wybierz Wyświetl kod dla tej zakładki i wprowadź Dim Changed As Range, c As Range, rMTS As Range
Przyciemnij i tak długo
Dim bPokaż wszystko jako wartość logiczną

Ustaw rMTS = Range("TblShowHide[Mark to Show]")
Zmieniono zestaw = Przecięcie (cel, rMTS)
Jeśli nie zmieniono, to nic, to
bShowAll = Len(rMTS.Komórki(1).Wartość) > 0
On Error Resume Next
Dla i = 2 To rMTS.Liczba wierszy
Sheets(Range("TblShowHide[Show/Hide Sheets]").Cells(i).Value).Visible = IIf(bShowAll, True, Len(rMTS.Cells(i).Value) > 0)
Dalej i
Przy błędzie GoTo 0
End If
End Sub


Ten komentarz został zminimalizowany przez moderatora na stronie
Spróbuję. Dziękuję bardzo!
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie wiem, co muszę zmienić, ale to nie zadziałało dla mnie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Jean,
tak mam przykład, który załączyłem tutaj. Zmień nazwę pliku na example.xlsm (nie jest spakowany, ale musiał zmienić nazwę, aby przesłać)
Na karcie menu znajduje się tabela z różnymi nazwami kart, zrób x lub dowolny inny znak, aby pokazać kartę, jeśli usuniesz znak, karta się ukryje.
Nadzieja, która pomaga
Ten komentarz został zminimalizowany przez moderatora na stronie
Zawiera kilka elementów, ale nie ma pliku Excel.
Ten komentarz został zminimalizowany przez moderatora na stronie
Chcę, aby menu/spis treści był moim pierwszym arkuszem roboczym i na podstawie odpowiedzi Tak/Nie - niektóre arkusze są wyświetlane, tj. więcej niż 1 staje się widoczny.
Mam problem z pojawieniem się kilku arkuszy roboczych na podstawie powyższego kodu.
Czy mogę użyć funkcji AND, np. Jeśli komórka X = „Tak” Następnie uwidocznij arkusz Y oraz arkusz Z i arkusz K?
Wszelkie porady są mile widziane.
pozdrowienia
Helen
Ten komentarz został zminimalizowany przez moderatora na stronie
А я вот не могу понять, как такое сделать в гугл таблицах именно?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć przyjacielu,

Możesz otworzyć nowy arkusz Google, dodać nowy arkusz, tak aby zawierał „Arkusz1” i „Arkusz2”, a następnie przejdź do Narzędzia > Edytor skryptów. W edytorze wklej następujące.

funkcja mojaFunkcja() {
var ss = Aplikacja Arkusza kalkulacyjnego.getActiveSpreadsheet();
var arkusz1 = ss.getSheetByName("Arkusz1");
var arkusz2 = ss.getSheetByName("Arkusz2");

var komórka1 = arkusz1.getRange('B2');

if (komórka1.getValue() == 2) {
arkusz2.ukryjArkusz();
}

if (komórka1.getValue() == 3) {
arkusz2.pokażArkusz();
}
}

Proszę spróbować.

Pozdrawiamy,
Mandy
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten kod działa świetnie, jednak mam 42 zmienne na 70 arkuszy, więc ten kod staje się bardzo długi i przestaje działać. Czy istnieje sposób, aby ten kod w sekcjach nie przekraczał rozmiaru kodu, który może obsłużyć VBA? A może muszę podzielić je na dwa osobne excel?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Liz
Przepraszamy, obecnie nie ma dobrego sposobu na rozwiązanie problemu.
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam wartość w komórce B1, która jeśli tak odkryje arkusz 1, ale także wartość w B2, to jeśli tak odkryje arkusz 2 itp. itp. ukrywa / odkrywa ostatni arkusz w porządku, ale nie resztę, w jaki sposób miałbym powiedzieć 10 wartości do odkrycia 10 różnych arkuszy? Dziękuję
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Andy,
Aby rozwiązać problem, zastosuj poniższy kod:
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

Uwagi: W powyższym kodzie wystarczy kilka razy skopiować poniższe skrypty i zmienić odwołanie do komórki i nazwę arkusza na własne.
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If


Proszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam problem polegający na tym, że chcę, aby karta była wyświetlana dla zakresu wartości, a nie tylko TAK lub NIE. Kiedy próbuję powtórzyć instrukcję IF w sub, pojawia się błąd, a kiedy próbuję wyświetlić wiele wartości w instrukcji if, pojawia się błąd. Jakieś pomysły?

Wygląda na to, że muszę użyć instrukcji IF/OR, ale nie jestem pewien, jak to zadziała.

Prywatny Sub Worksheet_Change (ByVal Target As Range)
Jeżeli [K6] = „VS 1”, „VS 2”, „VS 3”, VS 4” Wtedy
Arkusze("Page6").Visible = True
Więcej
Sheets("Page6").Visible = False
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Małgorzato,
Aby rozwiązać problem, zastosuj poniższy kod, powinieneś użyć Lub, aby dołączyć do warunków.
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

Proszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Skyyang - to zadziałało idealnie. Dziękuję za szybką odpowiedź!
Ten komentarz został zminimalizowany przez moderatora na stronie
Próbuję tego użyć, ale pojawia się komunikat „Błąd kompilacji - nie można znaleźć projektu lub biblioteki” i podświetlanie komórki, w której znajduje się lista rozwijana Tak/Nie. Myślę, że może to być spowodowane tym, że jest to połączona komórka, czy można to jakoś obejść?
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL