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

¿Cómo ocultar o mostrar una hoja de trabajo específica según el valor de la celda en otra hoja?

¿Existe algún método para que podamos ocultar o mostrar una pestaña de hoja de trabajo específica en función del contenido de una celda en otra hoja? Por ejemplo, cuando ingreso el texto "Sí" en la celda G1 de la Hoja2, quiero que la Hoja1 esté oculta, y cuando ingrese "No", la Hoja1 se muestre de inmediato. ¿Cómo podría resolver este problema en Excel?

Ocultar o mostrar una pestaña de hoja de trabajo específica según el valor de la celda con código VBA


flecha azul burbuja derecha Ocultar o mostrar una pestaña de hoja de trabajo específica según el valor de la celda con código VBA

Para ocultar o mostrar una pestaña de hoja de trabajo específica basada en un valor de celda en otra hoja de trabajo, el siguiente código de VBA puede hacerle un favor, haga lo siguiente:

1. Vaya a la hoja de trabajo que contiene el valor de celda en el que desea ocultar otra hoja.

2. Haga clic con el botón derecho en la pestaña de la hoja y seleccione Ver código, en el aparecido Microsoft Visual Basic para aplicaciones ventana, copie y pegue el siguiente código en la ventana del módulo en blanco, vea la captura de pantalla:

Código de VBA: oculte u oculte una pestaña de la hoja de trabajo según el valor de la celda:

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 ocultar pestaña según el valor de celda 1

Nota: En el código anterior, G1 y Sí son el contenido de celda y celda en el que desea basarse, y Sheet1 es la hoja específica que desea ocultar o mostrar. Puede cambiarlos según sus necesidades.

3. Luego guarde y cierre este código, cuando ingrese "No" u otro texto en la celda G1, Sheet1 está oculto, pero si ingresa "Sí" en la celda, Sheet1 se muestra de una vez, vea las capturas de pantalla:

doc ocultar pestaña según el valor de celda 2
1
doc ocultar pestaña según el valor de celda 3

 


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior

 

Comentarios (23)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
Hola
Gracias por el consejo. Necesito hacer el mismo escenario pero no solo en una celda (G1 en este caso) sino en todas las celdas de la columna G. Lo intenté con "Rango" pero no funcionó.

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Si Rango("X2:X100") = "" Entonces
Hojas ("MEDICIONES BASADAS EN TAREAS DE LA UE"). Visible = Falso
otro
Hojas ("MEDICIONES BASADAS EN TAREAS DE LA UE"). Visible = Verdadero
Si terminar
End Sub


Gracias de antemano
Este comentario fue minimizado por el moderador en el sitio
¿Alguna posibilidad de que esto haya sido respondido? También me encuentro con este escenario en el que entra en juego un rango completo en lugar de una sola celda... Usé esta misma codificación con los mismos resultados.
Este comentario fue minimizado por el moderador en el sitio
Hice 2 hojas de trabajo de la siguiente manera:
Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Si [C20] = "Sí" Entonces
Hojas("hoja1").Visible = Verdadero
otro
Hojas("hoja1").Visible = Falso
Si terminar
Si [C22] = "Sí" Entonces
Hojas("hoja2").Visible = Verdadero
otro
Hojas("hoja2").Visible = Falso
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
¡Muy útil!
Este comentario fue minimizado por el moderador en el sitio
Quiero ver si me pueden ayudar con mi problema. Esencialmente, he tenido este código exacto en una hoja que uso, pero con una función o, por lo que la respuesta puede ser "sí" o "verdadero". Sin embargo, la hoja que se está ocultando/desocultando a veces se vuelve a ocultar por razones desconocidas. Se mostrará cuando escriba sí, pero cuando vaya a usarlo más tarde se ocultará nuevamente, aunque el valor de la celda siga siendo sí. ¿Alguna idea de por qué puede estar pasando esto y/o cómo solucionarlo?
Código de referencia:
Private Sub Worksheet_Change(ByVal Target As Range)'Oculta/muestra la página de calibración
Si [B18] = "Sí" o Target.Value = "Verdadero" Entonces
Hojas("Verificación XXX").Visible = Verdadero
otro
Hojas("Verificación XXX").Visible = Falso
Si terminar

Este comentario fue minimizado por el moderador en el sitio
Hola, tengo un libro de trabajo con varias pestañas con nombre vinculadas a una hoja de índice en la parte delantera. El usuario puede seleccionar las hojas que desea usar marcando una casilla junto al nombre de la hoja: en blanco, N/A o Sí (lista desplegable). ¿Hay alguna forma de adaptar este código para que la hoja sea visible si la casilla de verificación está en blanco o contiene "Sí", pero no visible si la casilla de verificación contiene "N/A".
Lo he intentado pero no sé lo suficiente sobre VBA para que funcione. Gracias
Este comentario fue minimizado por el moderador en el sitio
Estoy buscando ocultar o mostrar hojas según un valor de celda (Sí/No). Los valores están en una tabla (tblFileContents) y la columna D4:D25 y el nombre de la hoja está en A4:A25 en la hoja . El orden de los elementos se puede cambiar. ¿Tiene una referencia a un ejemplo que me permitiría hacer esto?
Este comentario fue minimizado por el moderador en el sitio
Tengo el mismo problema y alguien más me dio una solución.
Haz una tabla (formateada como tabla) con 2 columnas, nombra la columna de la izquierda Hojas para mostrar/ocultar, la columna de la derecha depende de ti. Pon todos los nombres de las hojas en la columna de la izquierda
Luego seleccione Ver código para esta pestaña e ingrese Dim Changed As Range, c As Range, rMTS As Range
Dim i As Long
Dim bShowAll como booleano

Establecer rMTS = Rango ("TblShowHide [Mark to Show]")
Conjunto cambiado = Intersecar (Objetivo, rMTS)
Si no cambia no es nada entonces
bMostrarTodos = Largo(rMTS.Células(1).Valor) > 0
On Error Resume Next
Para i = 2 Para rMTS.Rows.Count
Hojas(Rango("TblShowHide[Mostrar/Ocultar hojas]").Cells(i).Valor).Visible = IIf(bShowAll, True, Len(rMTS.Cells(i).Value) > 0)
Siguiente i
En caso de error, vaya a 0
Si terminar
End Sub


Este comentario fue minimizado por el moderador en el sitio
Voy a intentarlo. ¡Muchos gracias!
Este comentario fue minimizado por el moderador en el sitio
No estoy seguro de lo que tengo que cambiar, pero no funcionó para mí.
Este comentario fue minimizado por el moderador en el sitio
Hola Jean,
sí, tengo un ejemplo adjunto aquí. Cambie el nombre del archivo a ejemplo.xlsm (no está comprimido, pero tuvo que cambiar el nombre para cargarlo)
En la pestaña del menú hay una tabla con los distintos nombres de pestañas, haga una x o cualquier otro carácter para mostrar la pestaña, si elimina el carácter, la pestaña se oculta.
Espero que ayude
Este comentario fue minimizado por el moderador en el sitio
Contiene varios elementos pero ningún archivo de Excel.
Este comentario fue minimizado por el moderador en el sitio
Quiero tener un Menú/Tabla de contenido como mi primera hoja de trabajo y, según las respuestas Sí/No, aparecen ciertas hojas de trabajo, es decir, más de 1 se vuelve visible.
Estoy luchando para que aparezcan varias hojas de trabajo basadas en el código anterior.
¿Puedo usar una función AND, por ejemplo, si la celda X = "Sí", entonces hacer visible la hoja Y, la hoja Z y la hoja K?
Cualquier consejo muy bienvenido.
saludos
Helen
Este comentario fue minimizado por el moderador en el sitio
А я вот не могу понять, как такое сделать в гугл таблицах именно?
Este comentario fue minimizado por el moderador en el sitio
Hola amigo,

Puede abrir una nueva hoja de Google, agregar una nueva hoja para que haya una "Hoja1" y una "Hoja2" y luego ir a Herramientas> Editor de secuencias de comandos. En el editor, pegue lo siguiente.

función miFunción() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var hoja1 = ss.getSheetByName("Hoja1");
var hoja2 = ss.getSheetByName("Hoja2");

var celda1 = hoja1.getRange('B2');

si (celda1.obtenerValor() == 2) {
hoja2.hideSheet();
}

si (celda1.obtenerValor() == 3) {
hoja2.mostrarHoja();
}
}

Por favor inténtelo.

Atentamente,
Mandy
Este comentario fue minimizado por el moderador en el sitio
Este código funciona muy bien. Sin embargo, tengo 42 variables para 70 hojas, por lo que este código se vuelve muy largo y deja de funcionar. ¿Hay alguna manera de hacer este código en secciones para no exceder el tamaño del código que VBA puede manejar? ¿O tengo que dividirlos en dos Excel separados?
Este comentario fue minimizado por el moderador en el sitio
hola, liz
Lo sentimos, en este momento, no hay una buena manera de resolver su problema.
Este comentario fue minimizado por el moderador en el sitio
Tengo un valor en la celda B1 que, en caso afirmativo, muestra la hoja 1, pero también un valor en B2, es decir, si muestra la hoja 2, etc. 10 hojas diferentes? Gracias
Este comentario fue minimizado por el moderador en el sitio
Hola Andy,
Para resolver su problema, aplique el siguiente código:
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

Nota:: En el código anterior, solo necesita copiar los scripts a continuación varias veces y cambiar la referencia de celda y el nombre de la hoja por los suyos.
If [B2] = "Yes" Then
Sheets("Sheet1").Visible = True
Else
Sheets("Sheet1").Visible = False
End If


Por favor, inténtalo, ¡espero que te pueda ayudar!
Este comentario fue minimizado por el moderador en el sitio
Tengo un problema en el que quiero que se muestre la pestaña para un rango de valores, en lugar de solo SÍ o NO. Cuando trato de repetir la declaración IF en el sub, me da un error y cuando trato de enumerar varios valores en la declaración if, aparece un error. ¿Algunas ideas?

Casi parece que necesito usar una declaración IF/OR pero no estoy seguro de cómo funcionaría.

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Si [K6] = "VS 1", "VS 2", "VS 3", VS 4" Entonces
Hojas("Página6").Visible = Verdadero
otro
Hojas("Página6").Visible = Falso
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola Margarita,
Para resolver su problema, aplique el siguiente código, debe usar O para unirse a las condiciones.
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

Por favor, inténtalo, ¡espero que te pueda ayudar!
Este comentario fue minimizado por el moderador en el sitio
Skyyang - esto funcionó perfectamente. ¡Gracias por su rápida respuesta!
Este comentario fue minimizado por el moderador en el sitio
Estoy tratando de usar esto, pero aparece "error de compilación: no se puede encontrar el proyecto o la biblioteca" y resalta la celda donde se encuentra el menú desplegable Sí / No. Creo que puede deberse a que se trata de una celda fusionada, ¿hay alguna forma de evitar esto?
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Siganos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL