Ocultar columnas automáticamente

Tengo el siguiente macro para que automáticamente se vayan ocultando las columnas al abrir el libro, de la columna L en adelante en función del numero de semana transcurrida del año. En la celda E1 automaticamente se indica el numero de semana, y a partir de la columna "L" tengo consecutivamente las semanas que transcurren 1,2,3... L1=1, M1=2, N1=3 ... Etc
Esto es para ocultar las semanas que ya hallan transcurrido según la fecha en que se habrá el libro
De antemano gracias por la ayuda

Private Sub OcultarSemanasVencidas()
Range("L1").Select
While ActiveCell.Column < Range(E1).End(xlToRight).Column
If ActiveCell.Value < Range(E1) Then
ActiveCell.EntireColumn.Hidden = True
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub

1 Respuesta

Respuesta
1

Te marco los errores:

- Range("E1")... las ref de celdas deben ir entre comillas, salvo que se utilice alguna variable, que no es tu caso aquí.

- Debes avanzar hacia la derecha, es decir Offset(0,1)... la sintaxis expresa: Offset(fila, col)

- El uso del End(xltoright) requiere que haya datos entre E1 y L1 sino no te dará la última col ocupada. Si tenés algunas celdas vacías, tendrás que consultar desde el final hacia adelante, es decir:

Range("IV1").End(xlToLeft).Column (no olvides las comillas)

Ok, datos corregidos y funciona muy bien, pero el cursor (o celda activa) se va al ultimo de la serie, y necesito que el cursor (o celda activa) sea el primero de la serie visible.

El objeto lo tengo asi

Private Sub CommandButton2_Click()
Range("L1:BK1").Select
While ActiveCell.Column < Range("J1").End(xlToRight).Column
If ActiveCell.Value < Range("J1") Then
ActiveCell.EntireColumn.Hidden = True
ActiveCell.Offset(0, 1).Select
Else
ActiveCell.Offset(0, 1).Select
End If
Wend
End Sub

Te agradezco mucho tu ayuda

RIS

Antes lo tenías correcto así: Range("L1").Select .... no sé xq lo cambiaste.

Solo tené presente que estás controlando cuál es la última col a partir de J hacia derecha.,... entonces no tiene que haber celdas vacías desde J hasta L, en este nuevo ejemplo no debiera estar vacía K1.

Cuando finalice el bucle podes seleccionar la celda que necesites, justo x encima de End Sub

Sdos

Elsa

Gracias Elsa

Tratare de ser claro, he seleccionado la celda, y todo el objeto funciona bien, pero quiero que el cursor (celda activa) sea la inmediata derecha del rango oculto, es decir, de la celda L1 a la celda BK1 están enumeradas del 1 al 52, y como ejemplo los rangos L1 y M1 ya son menores al rango K1 estas columnas se ocultan y necesito que el cursor (celda activa) quede en el rango N1.

ahorita como lo tengo el cursor se va a la celda K3, pero como el objeto recorrió de L1 a BK1 el resultado final que se ve en pantalla es que veo el rango K3 y enseguida el rango BJ1.

Se puede hacer algo al respecto?

Gracias nuevamente :)

Reitero: Cuando finalice el bucle podes seleccionar la celda que necesites, justo x encima de End Sub

En tu caso sería:

ActiveCell.Offset(0, 1).Select
End Sub

Sdos!

Gracias por la ayuda, la forma en que logre lo que necesitaba es con el siguiente objeto

Range("K1").Select
X = Range("K1")
ActiveCell.Offset(2, X).Select
X = Range("K1") + 1
End Sub

Por aquí seguiré ampliando mis conocimiento con el apoyo de Ustedes

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas