top of page
Foto del escritorJaime Franco Jimenez

6. Vamos a aclarar algunos conceptos

Cualquier elemento en Excel, es un objeto, y, cualquier objeto en Excel, lo podemos manipular a través de VBA.


Un primer objeto es la aplicación, es decir, Excel completo, en VBA cuando nos queremos referir a Excel, usamos el objeto Application.


Después, tenemos el libro con el que estamos trabajando, por ejemplo, este libro se llama pruebas.xlsm, pues es VBA, para dirigirnos al libro usamos el objeto workbook.


Después, tenemos las hojas de un libro de Excel, pues cuando nos referimos a las hojas, en VBA nos referimos a worksheet o sheet.


Por último, tenemos las celdas, pues para referirnos a una celda, usamos Cells, y, también podemos usar Range.


Abramos un libro nuevo de Excel.


Vamos al editor de VBA, e, insertamos un módulo, y, le ponemos un nombre al módulo.


Si quiero hacer referencia a la celda A1, puedo usar Range, de la siguiente manera:







Con esta línea solo estamos seleccionado la celda A1, siendo ahora la celda activa.


Debemos tener en cuenta que el argumento de Range, debe de ir entre comillas.


Si quiero asignar un valor a la celda A1, escribo lo siguiente:


Range("a1").Value = 25


En este caso, uso la propiedad value del objeto Range, donde pongo el número 25 en la celda A1.


Si nos fijamos en el explorador de proyectos, podemos ver que solo tenemos una hoja.








Voy a añadir una hoja nueva en Excel, y, ahora podemos ver en el explorador de proyectos, que tenemos dos hojas.








Bien, cuando uso la siguiente expresión:







Va a afectar a la hoja en la que estoy trabajando, es decir, a la hoja activa.


Si me voy a otra hoja, y, ejecuto la macro, vemos que en la celda A1 pone el valor 25, porque ahora esa es la hoja activa.


Pero, por ejemplo, quiero que cuando ejecute la macro, siempre ponga el valor en la hoja2.


Vamos a modificar Range de la siguiente manera:








Donde delante de la referencia a celda, hemos puesto el nombre de la hoja seguido del signo de exclamación, y, la referencia a celda, esto, es igual que lo hacemos en Excel, cuando nos queremos dirigir a otra hoja.


Si ejecutamos la macro, estando en otra hoja en Excel, podremos ver que siempre pone el valor en A1 de la hoja2.


También, podría poner lo siguiente:








Donde, primero, seleccionamos la hoja, y, después con Range ponemos el valor en la celda A1.


Si nos fijamos en el explorador de proyectos, podemos ver, por ejemplo, hoja2, y, entre paréntesis hoja2.











Bien, voy a cambiar el nombre de la hoja2, por ejemplo, a pruebas.


Si volvemos al explorador de proyectos, ahora vemos hoja2, y, entre paréntesis el nombre que le hemos dado a la hoja.











Volvemos a ejecutar la macro, y, nos devuelve un error, porque, él está buscando una hoja que se llame hoja2, pero ya no la encuentra, porque le hemos cambiado el nombre a pruebas.




Bien, si volvemos al explorador de proyectos, vemos que primero pone Hoja2, pues ese es el lugar físico que ocupa en la hoja de cálculo, quiere decir que la hoja2, siempre va a ocupar la posición 2 dentro de la hoja de cálculo, si modifico la expresión, y, en vez de poner el nombre de la hoja, pongo la posición de la hoja, es decir, 2, pero ya no entre paréntesis, vemos que al ejecutar la macro ya no muestra error, porque va directamente a la posición 2 dentro de la hoja de cálculo, sin importar cual sea el nombre de la hoja.





Es algo para tener en cuenta.


Ahora, vamos a abrir dos libros de Excel, como no les he cambiado el nombre, uno se llama Libro1, y, el otro Libro2.


Desde el libro1, voy a crear una macro, para que en la celda A1 del libro2, ponga un valor cualquiera.


Vamos al editor de VBA, insertamos un módulo, y, le asignamos un nombre.


Escribimos lo siguiente:







Le estamos diciendo que vaya a un libro llamado Libro2, dentro de ese libro, que vaya a la hoja1, y, dentro de la hoja1, que seleccione la celda A1 y ponga el valor de 25.
















Si este libro ya lo hubiésemos guardado, entonces en la línea de código le debemos de añadir la extensión.







Podemos quitar el objeto Application, porque por defecto, ya estamos trabajando dentro de Excel.








Vamos a ver algunas cosas más que podemos hacer con el objeto Application.


Si, por ejemplo, pongo la siguiente expresión:








A la hoja activa, le estoy cambiando el nombre por pruebas.


El objeto Application tiene algunas colecciones que son de mucha utilidad, como puede ser sheets, Column, y, rows.


La colección sheets, nos va a permitir acceder a cualquier hoja de un libro.


Por ejemplo, si escribo la siguiente línea:







Me va a mostrar un cuadro de dialogo, donde me muestra el número de hojas que tiene el libro.









Esta línea que acabamos de usar se refiere al libro activo, es decir, al libro con el que estamos trabajando.


También, podemos acceder a filas y columnas de la hoja activa, por ejemplo, si escribo la siguiente línea:







Me selecciona la columna 2.


Si cambiamos columns por rows, pues me selecciona la fila 2.








El objeto Application, tiene muchísimas propiedades, una de ellas, es ActiveWorkBook, que representa el libro de Excel activo.


Por ejemplo, si escribo la siguiente línea, donde concateno la frase El nombre del libro activo es junto con el nombre del libro, y, ejecutamos:







Nos mostrara un cuadro de dialogo, donde nos muestra el nombre del libro junto con la frase.








También, tenemos ActiveSheet, es decir, la hoja activa, es decir, la hoja actualmente seleccionada.


Por ejemplo, si escribo la siguiente línea:







Me aparece un cuadro de dialogo con el nombre de la hoja.









También, tenemos el objeto ActiveCell, que representa la celda activa.


Por ejemplo, si escribo la siguiente línea:







Me aparece un cuadro de dialogo, donde me muestra la fila de la celda donde estoy posicionado.










Igualmente, si escribo lo siguiente, me dará la columna activa de la celda donde estoy posicionado.








Me aparecerá otro cuadro de dialogo, donde me muestra el número de columna activa.









Si, escribo la siguiente expresión:







Me selecciona la hoja1 como la activa, podemos ver que en vez de poner el nombre de la hoja, he puesto el sitio físico que ocupa la hoja dentro del libro.


Si escribo la siguiente línea:







Vamos a borrar la hoja1, me aparecerá una ventana de confirmación de que se va a borrar de forma permanente la hoja1, si estamos seguros, hacemos clic en eliminar.








Si escribo la siguiente línea:








Le estoy diciendo que copie la hoja activa al lado de esta.


Si escribo la siguiente línea:









Me da el valor que haya en la celda activa.


También, tenemos el objeto ThisWorkBook, que hace referencia al libro donde se está ejecutando la macro.


Si escribo la siguiente línea:








Me va a cerrar el libro sin guardar los cambios.



58 visualizaciones0 comentarios

Entradas Recientes

Ver todo

Comments


bottom of page