Macro de despliegue

Hola elsamatilde, quiero preguntarte como hago para que a partir de una celda en excel se desplieguen o no otras celdas, me explico. Tengo una celda que corresponde a un número, quiero que si ese número es mayor que cero me deje llenar otros campos; pero si es iguala 0 no me deje ver las celdas que yo le diga.
¿Existe alguna forma? Agradezco tu ayuda.
Gracias

1 Respuesta

Respuesta
1
Primero convengamos que las 'celdas' no se pueden ocultar, salvo que ocultes toda la fila. Lo que sí se puede hacer es bloquearlas para no permitir el ingreso de datos.
Necesitas una rutina entonces que te controle el valor ingresado en esa celda (en mi ejemplo será la A5)
Entras al Editor con Alt+F11 y selecciona el objeto Hoja (a tu izquierda) donde harás el control, y copia la siguiente macro.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$5" Then
'1ro hay que desproteger la hoja, si no hay clave quita lo que se encuentra entre ""
ActiveSheet.Unprotect "tuclave"
If Target.Value > 0 Then
'se seleccionan las celdas a desbloquear
Range("B3:D3").Select
Selection.Locked = False
Selection.FormulaHidden = False
Else
'si es cero
Range("B3:D3").Select
Selection.Locked = True
Selection.FormulaHidden = True
End If
'se protege nuevamente la hoja
ActiveSheet.Protect
End If
End Sub
Ahora si solo fuese ocultar una fila o mostrarla según el valor en A5 la rutina será:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$5" Then
?si el valor es > 0 y la fila se encuentra visible se la ocultará.
If Target.Value > 0 And Rows(3).Hidden = False Then
Rows(3).Hidden = True
ElseIf Target.Value <= 0 And Rows(3).Hidden = True Then
Rows(3).Hidden = False
End If
End If
End Sub
Espero que alguna de las 2 soluciones tu problema y no olvides finalizar la consulta
Hola, primero gracias por tu contestación y segundo, la respuesta que me sirve para este momento es la segunda, pero cuando la copio en el visualizador de VBA me genera un error que no me deja iniciar a correr la macro. En síntesis no la he podido utilizar.
Agradezco nuevamente tu colaboración, para ver que estoy haciendo mal.
1000 gracias.
¿Viendo mi respuesta anterior veo que apareció un signo de interrogación? En lugar de una comilla simple, quizás sea eso.
Fíjate que debe quedar así esta línea:
'si el valor es > 0 y la fila se encuentra visible se la ocultará.
Sino cuando te aparece el error, debes ponerlo a Depurar, e indicarme la línea que te marca error y toda la información que te aparezca, sino no podré darme cuenta desde aquí.
Hola elsamatilde, nuevamente gracias por tu atención y te escribo para decirte que no me funciona.
Te copio lo que estoy escribiendo en el visualizador de VBA
Sub MACRO()
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$5" Then
'si el valor es > 0 y la fila se encuentra visible se la ocultará.
If Target.Value > 0 And Rows(3).Hidden = False Then
Rows(3).Hidden = True
ElseIf Target.Value <= 0 And Rows(3).Hidden = True Then
Rows(3).Hidden = False
End If
End If
End Sub
A lo que me sale una alerta que dice "error de compilación" se esperaba un END SUB, mostrando el error en la línea de inicio Sub MACRO()
Gracias
Te mencioné en mi primer respuesta esto:
'Entras al Editor con Alt+F11 y selecciona el objeto Hoja (a tu izquierda) donde harás el control, y copia la siguiente macro.'
En ningún momento dije que coloques Sub Macro()... ese es tu error: debes dejar en la hoja (en la lista que verás a tu izquierda dale doble click a Hoja1, u Hoja2, la que tendrá que controlar) y en la ventana en blanco pegá mi rutina que comienza con:
Private Sub Worksheet....
No agregues nada más...
Las que empiezan con Sub van en un módulo, pero esta va en la hoja.
Saludos y si se resolvió no olvides finalizar.
Elsa
*** este tema verás explicado paso a paso en mi nuevo manual 400Macros, en:
Pues gracias de nuevo, pero sigue sin funcionar el Sub macro() es algo que me exige el VBA; habiendo efectuado como tu dices sin embargo al correrlo me exige que le de un nombre a la macro.? Apareciendo la ventana nombre de macros.
Pues si no se puede de todos modos gracias.
Hola elsamatilde, ya probé y ahora si me funciono, millón de gracias. Te puedo preguntar como seria para ocultar un rango de filas ya que pretendo hacerlo con lo que me enviaste y no se como.
Gracias.
para mantener el orden... ´¿podrías finalizar esta y comenzar otra con la nueva consulta? Coloca en el titulo el tema,.
Ahora que ya han pasado los festejos... ¿podrías finalizar la consulta ya que como mencionas el problema quedó solucionado?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas