Macro para ocultar rango de columnas

Tengo un archivo que le quiero adaptar esta macro que cuando presiono una imagen, oculta las columnas donde se cumple la condición:

Sub Ocultar()

If Range("B2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("B:C").Select
Selection.EntireColumn.Hidden = True

Else

If Range("D2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("D:E").Select
Selection.EntireColumn.Hidden = True

Else

If Range("F2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("F:G").Select
Selection.EntireColumn.Hidden = True

Else

If Range("H2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("H:I").Select
Selection.EntireColumn.Hidden = True

Else

If Range("J2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("J:K").Select
Selection.EntireColumn.Hidden = True

Else

If Range("L2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("L:M").Select
Selection.EntireColumn.Hidden = True

Else

End If
End If
End If
End If
End If
End If

El detalle, es que solo logro que se oculte 1 condición, en los demás no logró nada, ya que los resultados son aleatorios porque están formulados de acuerdo a los distintos datos y por presentación, quiero ocultar donde "NO HAYA ESA CADENA EN LA PLAZA", mi excel es 2010.

Respuesta
1

Prueba

Sub Ocultar()

If Range("B2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("B:C").Select
Selection.EntireColumn.Hidden = True

End if

If Range("D2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("D:E").Select
Selection.EntireColumn.Hidden = True

End if

If Range("F2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("F:G").Select
Selection.EntireColumn.Hidden = True

End if

If Range("H2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("H:I").Select
Selection.EntireColumn.Hidden = True

End if

If Range("J2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("J:K").Select
Selection.EntireColumn.Hidden = True

End if

If Range("L2") = "NO HAY ESA CADENA EN LA PLAZA" Then
Range("L:M").Select
Selection.EntireColumn.Hidden = True

End If

Podemos simplificar el código de esta manera:

Sub Ocultar()
  Dim arr As Variant, c As Variant
  '
  arr = Array("B2", "D2", "F2", "H2", "J2", "L2")
  '
  For Each c In arr
    If Range(c) = "NO HAY ESA CADENA EN LA PLAZA" Then
      Range(c).Resize(1, 2).EntireColumn.Hidden = True
    End If
  Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas