Por ejemplo si queremos mover la barra de desplazamiento hacia 15 filas abajo debemos escribir el siguiente código:
Sub MoverAbajo()
ActiveWindow.SmallScroll Down:=15
End Sub
De igual manera podemos hacerlo para los demás lados:
Up: Hacia Arriba
Down: Hacia Abajo
ToRight: Hacia la derecha
ToLeft: Hacia la izquierda.
Una vez explicado la manera de usar este código vamos a realizar un ejemplo completo que consiste en lo siguiente:
Ejemplo:
En una hoja de nuestro libro (ver figura 1) se tiene movimientos de venta de varios meses.
Vemos que en la figura se muestra el mes enero en la columna "A". De esa manera mas abajo (No se ve en la imagen) se tiene información del mes febrero, marzo, etc.
El objetivo es seleccionar el mes en la celda B1 y que automáticamente se muestre en pantalla el movimiento de ese mes. Eso lo lograremos haciendo uso de la propiedad SmallScroll en vba.
Figura 1
Trabajando...
Aquí podrás bajar el archivo con el cual trabajaremos, cuenta con dos hojas, la "Consulta" contiene información de las ventas desde el mes de enero a abril. En la celda B1 se encuentra una lista desplegable con validación de datos, el cual contiene los meses de enero a diciembre que servirá para mostrar las ventas de un determinado mes que elija el usuario.
Se tiene también la hoja "Meses" el cual contiene los meses de enero a diciembre que se usa en la hoja consulta.
Bien entonces vamos a presionar las teclas Alt+F11 para ingresar a nuestro editor de vba.
Añadiremos un modulo y pegaremos el siguiente código
Sub MiScroll()
'Buscar mes
On Error GoTo Err
Range("B2").Select
pos = Range("A:A").Find(Range("B1").Value).Row - 2
ActiveWindow.SmallScroll Down:=pos
Exit Sub
Err:
If Err.Number = 91 Then
MsgBox "No se encuentra el mes seleccionado", vbInformation, "Error"
Else
MsgBox Err.Description, vbCritical, "Error"
End If
End Sub
Explicacion del codigo:
pos = Range("A:A").Find(Range("B1").Value).Row - 2
Con este codigo buscaremos el mes que elegimos en la celda B1 de nuestra hoja consulta en toda la columna "A" y si lo encuentra guardamos la posición del mes en la variable pos y le restamos menos 2.
ActiveWindow.SmallScroll Down:=pos
Como la variable pos almacena el numero de la fila donde encontramos el mes, utilizaremos ese numero para movernos hacia abajo y colocamos la variable pos en vez de un numero fijo en nuestro codigo.
If Err.Number = 91 Then
MsgBox "No se encuentra el mes seleccionado", vbInformation, "Error"
Else
MsgBox Err.Description, vbCritical, "Error"
End If
En caso no se ubique el mes nos mostrara un mensaje personalizado.
Luego estando dentro de nuestro entorno de desarrollo le damos doble clic al objeto Hoja1(Consulta) y pegamos el siguiente código:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Row = 1 Then
Call MiScroll
End If
End Sub
Este código sirve para llamar a la función MiScroll que tenemos en nuestro modulo 1 cada vez que seleccionamos el mes desde la Celda B1.
Una vez finalizado el nuestro ejemplo lo guardamos en nuestra pc como tipo de libro "Libro de excel habilitado para macros".
En este enlace les dejo el archivo finalizado
No hay comentarios:
Publicar un comentario