domingo, 26 de julio de 2015

Mover la barra de desplazamiento SmallScroll usando excel vba

En excel existe un código para mover la barra de desplazamiento y de esta manera podemos dirigirnos hacia cualquiera de los lados izquierda, derecha, abajo y arriba

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

Cargar multiples archivos txt en SSIS

 Fuentes Archivos planos Descargar AQUÍ los archivos Consulta SQL de creacion de tabla Despacho en SQL Server CREATE TABLE [dbo].[Despacho]...