Ocultar y mostrar filas VBA excel

Resuelto
Elstat Mensajes publicados 1 Estado Miembro -  
eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   -
Hola a todos

tengo en una página líneas que quiero ocultar si en la columna G a partir de la fila 34 está vacía y quiero ocultar las filas de la 36 a la 100.
ejemplo: si coloco un valor en la celda G35 quiero que las filas G37 a G100 se oculten y si quito el valor en la celda G35 quiero que las filas G36 a G100 se oculten.

Estoy buscando simplificar una lista de pedidos
If [G34] = "" Then Rows("36:100").EntireRow.Hidden = True
If [G35] = "" Then Rows("37:100").EntireRow.Hidden = True
If [G36] = "" Then Rows("38:100").EntireRow.Hidden = True
.
.
.

If [G98] = "" Then Rows("100:100").EntireRow.Hidden = True

Aquí está mi intento de código y gracias por su ayuda

Sub Ocultar()

Dim I As Long

I = 34

Do While I < 101
If Cells(I, 7) = "" Then Cells(I + 2, 100).EntireRow.Hidden = True
End If
I = I + 1

Loop

End Sub

2 respuestas

  1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Buenas tardes,

    Intenta con esto.
    Me basé en el texto:
    ejemplo: si coloco un valor en la celda G35 quiero que las filas G37 a G100 se oculten y si elimino el valor en la celda G35 quiero que las filas G36 a G100 se oculten.
    sin tener en cuenta si las celdas de abajo están llenas o vacías (¿lo que haces en tu código?)

    Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [G36:G100]) Is Nothing Then Exit Sub Rows("36:100").EntireRow.Hidden = False Rows(Target.Row + IIf(Target = "", 1, 2) & ":100").EntireRow.Hidden = True End Sub

    eric

    PD: la próxima vez usa un sitio sin publicidad, por favor, como cjoint.com

    Nunca responderás a un mensaje privado no solicitado...
    Bueno, eso está hecho.
    6
    1. elstat
       
      Hola eriiic

      Te agradezco
      Tu código funciona de maravilla
      Solo he cambiado esta línea
      Rows(Target.Row + IIf(Target = "", 1, 2) & ":100").EntireRow.Hidden =
      POR
      Rows(Target.Row + IIf(Target = "", 2, 3) & ":100").EntireRow.Hidden =
      Tu código es muy corto y claro

      Gracias de nuevo
      0
    2. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      ok, voy a ponerlo en resuelto para ti (en la parte superior hacia tu título, para la próxima vez)
      eric
      0