Cómo congelar una fila específica en Excel con VBA

19:00

Siempre que tenga una gran cantidad de datos, puede ser útil tener una fila específica a la vista cuando se desplaza por la pantalla. 
Mientras que usted puede hacer esto manualmente, tiene sentido utilizar VBA para seleccionar la fila y la "congelación" del panel.


Este artículo le mostrará cómo congelar el panel superior dependiendo de la cantidad de datos que tiene.
Un escenario típico en el panel de comando Freeze VBA es útil
El ejemplo que vamos a utilizar es un archivo descargado que contiene más de 100 entradas.
Podría ser una lista de  clientes o empleados  en la que le gustaría "congelar" la fila de arriba al desplazarse por las entradas.
Los datos podrían tener este aspecto:
Name 
====== 
Emp1 
Emp2 
Emp3 


Emp100 
Emp101

Vamos a suponer que usted está usando VBA para guardar los datos en una nueva hoja de cálculo, en lugar de utilizar una copia manual y pegar.
Una vez que el código ha terminado de descargar los datos, es posible que desee congelar la fila superior si hay más de 100 entradas.
En primer lugar, usted tendrá que trabajar fuera cuántas entradas hay:
dim rng as range 
dim entries as long 

set rng=range("a1").currentRegion.columns(1) 

entries=rng.rows.count

Una vez que sepa cuántas filas hay en el conjunto de datos que condicionalmente puede establecer el orden de congelación del panel seleccionando la fila debajo de la celda especificada.
Vamos a congelar la fila de arriba, pero vamos a necesitar para "descongelar" las lunas existentes en primer lugar.
activeWindow.freezepanes=false 
if entries >100 then
range("a2").activate
activeWindow.freezepanes=true 
End If
Si necesita especificar la fila a congelar puede insertar el siguiente comando en el código.
myRow=x+1 

range("a" & x).activate 

activeWindow.freezepanes=true
La misma técnica se podría utilizar para establecer el orden de congelación sobre la base de otras variables o criterios. En el siguiente ejemplo, el código se bloquea el panel debajo de la celda que contiene "Enero 2013".
set rng=range("a1").currentRegion.columns(1) 
myCell="January 2013"
For x = 1 To rng.Rows.Count
If rng.Rows(x) = str Then
myCell = rng.Rows(x).Offset(1, 0).Address
Exit For
End If 
Next 
Range(myCell).Activate 
ActiveWindow.freezePanes = True
O bien, el código podría buscar una celda en negrita.
For x = 1 To rng.Rows.Count
If rng.Rows(x).font.bold=true Then
myCell = rng.Rows(x).Offset(1, 0).Address
Exit For
End If  Next  Range(myCell).Activate  ActiveWindow.freezePanes = True
Se podría activar el código de varias maneras:
  • Configuración de un evento de cambio de hoja de cálculo para identificar cuando el número de entradas supera un cierto numero
  • Escriba el código en un procedimiento de importación de datos existente
  • Crear una etiqueta como negrita o un valor de celda para que el código para identificar el lugar correcto para insertar el panel congelado.
Resumen
Excel es capaz de almacenar grandes cantidades de datos, pero es una buena idea mantener el diseño de la hoja de cálculo tan fácil de usar como sea posible. Al utilizar el comando Inmovilizar paneles que pueden reducir los errores y hacer la vida más fácil para cualquier persona que utilice el archivo de Excel.

0 comentarios:

Publicar un comentario