UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se puede subir archivos al foro, favor de hacerlo en servidor externo (Dropbox, Drive...) y dejan link. "Sin archivo no hay respuestas"

Favor de leer "Todos los temas" Click aquí.

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

nugarsan


Hola,
Estoy haciendo una macro en la que necesito buscar en el rango K2:OJ2 el valor contenido en la celda A2. Entonces ocultar la columna que contenga dicho valor.

He creado esto:

   Sub Buscar()
   Dim Hoja As Worksheet
   Dim Depend As Range
   Dim Valor As String


   Set Hoja = ThisWorkbook.Worksheets("Botigues")
   Valor = Hoja.Range("A2").Value


   Set Depend = Hoja.Range("K2:OJ2").Find(What:=Valor)
   Depend.EntireColumn.Hidden = True
End Sub

Que es lo que hago mal? Por que no lo hace?
Muchas gracias de antemano a todos. Laughing

Igtelo

avatar
Hola nugarsan.

Prueba con el siguiente, va explicado línea por línea.

Código:
Sub Buscar()
  
Dim rango As Range, Valor As String, w, x As Integer

Valor = Range("A2").Value      'Variable del dato de A2
If Valor = "" Then Exit Sub    'Sino existe dato en A2, sale de la macro

Set rango = Range("K2:OJ2")   'Fija el rango
w = Application.CountIf(rango, Valor)  'Cuenta las veces que aparece el valor de A2

rango.Find(Valor, lookat:=xlWhole).Activate  'Búsqueda exacta(xlwhole) y se posiciona en la celda
ActiveCell.EntireColumn.Hidden = True  'Oculta la columna

'Bucle para las veces que exista el dato de A2
For x = 1 To w - 1  'El -1 porque ya encontró el 1er. dato (el de arriba)
rango.FindNext(ActiveCell).Activate   'Encuentra siguiente valor y se posiciona en la celda
ActiveCell.EntireColumn.Hidden = True  'La oculta
Next               'Repite el bucle hasta terminar

End Sub

Los datos del rango a buscar "DEBEN" ser iguales al dato de celda A2

Opción2: Como sólo busca en una fila, conviene más éste, sencillo y fácil de entender a comparación del Find.
Código:
Sub buscar2()

Dim celda As Range

For Each celda In Range("K2:OJ2")  'Para cada celda del rango
If celda = [A2].Value Then     'Si valor de la celda es igual a A2 entonces
celda.EntireColumn.Hidden = True   'Oculta la columna.
End If
Next

End Sub

Saludos
Ignacio Téllez

Igtelo

avatar
Hola Nugarsan.

Si hay algo que me molesta sobre manera es que después de que se les da la ayuda que piden, entran y entran al foro y no contestan.
De ésta actitud y otras ya estoy "harto", tómate la molestia de contestar, es "educación básica".

Atentamente
Ignacio Téllez

Igtelo

avatar
Lo doy por resuelto y cierro.

Ignacio Téllez

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.