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

Cum se ascunde sau se ascunde o anumită foaie de lucru pe baza valorii celulei dintr-o altă foaie?

Există vreo metodă pentru a ascunde sau dezvălui o anumită filă de foaie de lucru pe baza conținutului unei celule dintr-o altă foaie? De exemplu, când introduc textul „Da” în celula G1 din Foaia2, vreau ca Foaia1 să fie ascunsă și când introduc „Nu”, Foaia1 să fie afișată simultan. Cum aș putea rezolva această problemă în Excel?

Ascundeți sau afișați o filă de foaie de lucru specifică pe baza valorii celulei cu codul VBA


săgeată albastru dreapta balon Ascundeți sau afișați o filă de foaie de lucru specifică pe baza valorii celulei cu codul VBA

Pentru a ascunde sau dezvălui o filă de foaie de lucru specifică pe baza unei valori de celulă dintr-o altă foaie de lucru, următorul cod VBA vă poate face o favoare, vă rugăm să faceți următoarele:

1. Mergeți foaia de lucru care conține valoarea celulei pe care doriți să ascundeți o altă foaie.

2. Faceți clic dreapta pe fila foaie și selectați Afișați codul, în pop-out Microsoft Visual Basic pentru aplicații fereastra, copiați și lipiți următorul cod în fereastra goală a modulului, vedeți captura de ecran:

Cod VBA: ascundeți sau ascundeți o filă de foaie de lucru pe baza valorii celulei:

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

fila ascundere doc pe baza valorii 1 a celulei

Notă: În codul de mai sus, G1 și Da sunt celula și conținutul celulei pe care doriți să vă bazați și Sheet1 este foaia specifică pe care doriți să o ascundeți sau să o afișați. Le puteți schimba după nevoile dvs.

3. Apoi salvați și închideți acest cod, când introduceți „Nu” sau alt text în celula G1, Foaia1 este ascunsă, dar dacă introduceți „Da” în celulă, Foaia1 este afișată simultan, vedeți capturi de ecran:

fila ascundere doc pe baza valorii 2 a celulei
1
fila ascundere doc pe baza valorii 3 a celulei

 


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab

 

Comentarii (23)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hei
Mulțumesc pentru pont. Trebuie să fac același scenariu, dar nu numai pe o singură celulă (G1 în acest caz), ci pe toate celulele coloanei G. Am încercat cu „Range”, dar nu a funcționat.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dacă Range("X2:X100") = "" Atunci
Sheets("EU TASK BASED MEASUREMENTS"). Vizibil = Fals
Altfel
Sheets("EU TASK BASED MEASUREMENTS"). Vizibil = Adevărat
Final, dacă
End Sub


Va multumesc anticipat
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreo șansă să se răspundă la asta? De asemenea, mă confrunt cu acest scenariu în care intră în joc o întreagă gamă în loc de o singură celulă... Am folosit aceeași codare cu aceleași rezultate.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am făcut 2 foi de lucru după cum urmează:
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dacă [C20] = „Da”, atunci
Sheets("sheet1").Visible = True
Altfel
Sheets("sheet1").Visible = False
Final, dacă
Dacă [C22] = „Da”, atunci
Sheets("sheet2").Visible = True
Altfel
Sheets("sheet2").Visible = False
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
De mare ajutor!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau să văd dacă mă poți ajuta cu problema mea. Am avut în esență acest cod exact într-o foaie pe care o folosesc, dar cu o funcție sau, astfel încât răspunsul poate fi „da” sau „adevărat”. Cu toate acestea, foaia care este ascunsă/deschisă uneori se re-ascunde din motive necunoscute. Se va afișa când scriu da, dar când îl folosesc mai târziu, este ascuns din nou, chiar dacă valoarea celulei este încă da. Aveți idee de ce s-ar putea întâmpla acest lucru și/sau cum să o remediați?
Cod de referință:
Private Sub Worksheet_Change(ByVal Target As Range)'Ascunde/afișează pagina de calibrare
Dacă [B18] = „Da” sau țintă.Valoare = „adevărat”, atunci
Foi de calcul („XXX Verificare”). Vizibil = Adevărat
Altfel
Foi de calcul ("XXX Verificare"). Vizibil = Fals
Final, dacă

Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, am un registru de lucru cu mai multe file denumite legate de o foaie index în față. Utilizatorul poate selecta foile pe care dorește să le folosească bifând o casetă de lângă numele foii - necompletat, N/A sau Da (listă derulantă). Există o modalitate de a adapta acest cod, astfel încât foaia să fie vizibilă dacă caseta de selectare este goală sau conține „Da”, dar nu este vizibilă dacă caseta de selectare conține „N/A”.
Am încercat, dar nu știu suficient despre VBA ca să funcționeze. Mulțumiri
Acest comentariu a fost redus la minimum de moderatorul de pe site
Caut să ascund sau să ascund foile pe baza valorii unei celule (Da/Nu). Valorile sunt într-un tabel (tblFileContents) și coloana D4:D25, iar numele foii este în A4:A25 pe foaie . Ordinea articolelor poate fi modificată. Aveți o referință la un exemplu care mi-ar permite să fac asta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am aceeași problemă și altcineva a oferit o soluție.
Faceți un tabel (formatează ca tabel) cu 2 coloane, denumește coloana din stânga Foi de afișare/ascunde, coloana din dreapta depinde de tine. Pune toate numele foilor în coloana din stânga
Apoi selectați Vizualizare cod pentru această filă și introduceți Dim Changed As Range, c As Range, rMTS As Range
Dim i As Long
Dim bShowAll As Boolean

Set rMTS = Range("TblShowHide[Mark to Show]")
Set modificat = Intersect(Target, rMTS)
Dacă nu a fost schimbat este nimic, atunci
bShowAll = Len(rMTS.Cells(1).Value) > 0
La data de eroare CV următoare
Pentru i = 2 To rMTS.Rows.Count
Foi de calcul(Range("TblShowHide[Afișați/Ascunde foile]").Cells(i).Value).Vizibil = IIf(bShowAll, True, Len(rMTS.Cells(i).Value) > 0)
Apoi eu
La eroare GoTo 0
Final, dacă
End Sub


Acest comentariu a fost redus la minimum de moderatorul de pe site
O să încerc asta. Mulțumesc foarte mult!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu sunt sigur ce trebuie să schimb, dar nu a funcționat pentru mine.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Jean,
da, am un exemplu pe care l-am atasat aici. Redenumiți fișierul în example.xlsm (nu este arhivat, dar a trebuit să redenumiți pentru a încărca)
Pe fila de meniu există un tabel cu diferite nume de file, faceți un x sau orice alt caracter pentru a afișa fila, dacă eliminați caracterul, fila se ascunde.
Sper că vă ajută
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acesta conține mai multe elemente, dar niciun fișier Excel.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau să am un Meniu/Cuprins ca prima mea foaie de lucru și pe baza răspunsurilor Da/Nu - apar anumite foi de lucru, adică mai mult de 1 devine vizibil.
Mă chinui să apară mai multe foi de lucru pe baza codului de mai sus.
Pot folosi o funcție AND, de exemplu, dacă celula X = "Da", atunci faceți vizibilă Foaia Y și Foaia Z și Foaia K?
Orice sfat este binevenit.
În ceea ce priveşte
Helen
Acest comentariu a fost redus la minimum de moderatorul de pe site
А я вот не могу понять, как такое сделать в гугл таблицах именно?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut prietene,

Puteți deschide o nouă foaie Google, adăuga o nouă foaie astfel încât să existe „Sheet1” și „Sheet2”, apoi accesați Instrumente > Editor de scripturi. În editor, lipiți următoarele.

function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("Sheet1");
var sheet2 = ss.getSheetByName("Sheet2");

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

dacă (cell1.getValue() == 2) {
sheet2.hideSheet();
}

dacă (cell1.getValue() == 3) {
sheet2.showSheet();
}
}

Vă rugăm să încercați.

Cu sinceritate,
Mandy
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest cod funcționează grozav, dar am 42 de variabile pentru 70 de coli, așa că acest cod devine foarte lung și nu mai funcționează. Există o modalitate de a face acest cod în secțiuni pentru a nu depăși dimensiunea codului pe care o poate gestiona VBA? Sau trebuie să le împart în două excele separate?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Liz
Ne pare rău, în prezent, nu există o modalitate bună de a vă rezolva problema.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am o valoare în Celula B1 care, dacă da, afișează foaia1, dar și o valoare în B2, dacă da, afișează Foaia2 etc etc.. ascunde/ascunde ultima foaie, dar nu și restul, cum aș proceda pentru a ascunde 10 valori. 10 foi diferite? Mulțumiri
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Andy,
Pentru a vă rezolva problema, vă rugăm să aplicați codul de mai jos:
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

notițe: În codul de mai sus, trebuie doar să copiați de mai multe ori scripturile de mai jos și să schimbați referința celulei și numele foii cu propriile dvs.
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If


Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am o problemă în care vreau ca fila să apară pentru o serie de valori, mai degrabă decât doar DA sau NU. Când încerc să repet instrucțiunea IF în sub, îmi dă o eroare și când încerc să listez mai multe valori în instrucțiunea if, primesc o eroare. Vreo idee?

Se pare că trebuie să folosesc o declarație IF/OR, dar nu sunt sigur cum ar funcționa.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dacă [K6] = "VS 1", "VS 2", "VS 3", VS 4", atunci
Sheets ("Pagina 6"). Vizibil = Adevărat
Altfel
Sheets ("Pagina 6"). Vizibil = Fals
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Margaret,
Pentru a vă rezolva problema, vă rugăm să aplicați codul de mai jos, ar trebui să utilizați Or pentru a vă înscrie în condiții.
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

Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Skyyang - aceasta a funcționat perfect. Vă mulțumim pentru răspunsul dumneavoastră prompt!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Încerc să folosesc acest lucru, dar vine cu „eroare de compilare - nu pot găsi proiectul sau biblioteca” și evidențiază celula în care se află meniul derulant Da/Nu. Cred că s-ar putea datora faptului că aceasta este o celulă fuzionată, există vreo modalitate de a o evita?
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL