Вы находитесь на странице: 1из 21

UNIDAD

TRABAJO CON OBJETOS


8.1. La aplicacin
8.2. El libro
8.3. La hoja
8.4. Manipulacin de datos I
8.5. Manipulacin de datos II
8.6. Uso de cuadros de dialogo
8.7. Conrmacin y pecin de datos
8.8. Cuadros de dialogo personalizados

8.1. LA APLICACIN
Excel posee gran candad de objetos que representan diferentes elementos como pueden
ser eslos, nombres denidos para celdas y rangos, grcos, libros, hojas, rangos, ventanas,
complementos y proyectos de Visual Basic.
Entre los diferentes objetos existen relaciones muchas de ellas de jerarqua, por ejemplo las
celdas se alojan en una hoja de clculo y sta, a su vez, forma parte de un libro, estos objetos
enen dependencias entre ellos. Por lo que es necesario conocer estos objetos y sus principales caracterscas, vamos a comenzar estudiando al objeto que acta como raz de todos los
dems, es la aplicacin o aplicaon.
Este objeto cuenta con propiedades y mtodos que afectan a la aplicacin de manera global. Es posible acceder a el desde cualquier punto de una macro o funcin, mediante la referencia global Applicaon. Sus propiedades se agrupan en dos categoras: las que dan acceso
a colecciones de otros objetos, como libros, complementos o ventanas, y las que conenen
opciones que afectan al comportamiento de la propia aplicacin.
Algunas de sus propiedades que dan acceso a las colecciones de otros objetos ms importantes son:
Workbooks Conene un objeto Workbook por cada libro que haya abierto en ese momento.
Addlns Conene un objeto Addln por cada complemento instalado.
Dialogs Conene un objeto Dialog por cada cuadro de dilogo disponible.
CommandBars Conene un objeto CommandBar por cada barra de herramientas que
exista.
Names Conene un objeto Name por cada nombre que hayamos denido para celdillas.
Windows Conene un objeto window por cada ventana que haya abierta en la aplicacin.
RecentFiles Conene un objeto RecentFile por cada archivo con el que se haya trabajado
recientemente.
Adems cada uno de los objetos de cada coleccin ene sus propias propiedades y mtodos. Por ejemplo los objetos Windows cuentan con una propiedad Capon que conene el
tulo de la ventana. Cada objeto RecentFile dispone de una propiedad Name con el camino y
nombre del archivo usado recientemente.

Vamos a ver un ejemplo en el que se trabaja con el objeto applicaon y algunas de las
propiedades que acabamos de ver, en este ejemplo lo que hacemos es conseguir un listado
de ventanas recientes para ello creamos una variable ventana de window y con un bucle for
recorremos todas las ventanas recientes e imprimimos en la ventana de inmediato el valor del
tulo de cada una de ellas.

Aqu vemos la ejecucin del objeto.

Respecto a las propiedades que afectan a las opciones del entorno, son muy variadas y en
muchos casos toman valores verdadero o falso, algunas de ellas son:
AcveCell Celda acva
AcveSheet Hoja acva
AcveWindow Ventana acva
AcveWorkbook - Libro acvo
DisplayStatusBar Controla la aparicin de la barra de estado en la ventana de Excel
ReferenceStyle indica el po de referencias a usar
DisplayStatusBar controla la aparicin de la barra de estado.
Vamos a ver un ejemplo en el que se trabaja con el objeto applicaon y algunas de las
opciones que acabamos de ver, el objevo es cambiar la visualizacin o no de la barra de estado, se llama al objeto barra de estado de la aplicacin y despus se niega el estado en el que
esta si esta a false se pone a true y se esta a true a false cambindose de este modo el estado
de la barra.

Si ejecutamos la macro podemos ver como la barra de estado aparece y desaparece.

8.2.EL LIBRO
Los libros de Excel en visual Basic son los objetos Workbook, y parten del objeto Applicaon. Desde el cdigo fuente podemos acceder al libro actual, con mediante la propiedad
AcveWorkbook, y a la coleccin de todos los libros abiertos, con la propiedad Workbooks.
Tambin podemos acceder al libro que conene la macro o funcin mediante la propiedad
global ThisWorbook, esta junto a la propiedad aplicaon pueden ser usadas directamente sin
poner delante el nombre del objeto.
Mediante Workbooks usando el mtodo open podemos abrir libros existentes pero es necesario como parmetro el nombre del libro y la ruta con add podemos crear nuevos libros. El
objeto workbook posee gran candad de propiedades, colecciones y mtodos, algunas de las
ms interesantes son:
Worksheets: Coleccin con un objeto Worksheet por cada hoja de clculo que exista en
el libro.
Charts: Conene un objeto Chart por cada grco.
Names: Coleccin con los objetos Name que equivalen a todos los nombres denidos
en el libro.
Las propiedades del libro nos permiten tambin obtener y modicar su nombre, determinar si se aceptan nombres en las frmulas, saber si ene asignada una clave de acceso, etc.
Los mtodos, tambin nmerosos, pueden ser ulizados para acvar un cierto libro, Acvate; cerrarlo, Close, o protegerlo, Protect.

En el ejemplo abrimos una hoja de clculo usando el mtodo open, despus la acvamos
con el mtodo ac!vate. El siguiente paso es enumerar las hojas usando la coleccin y, por cada
una de ellas, imprimimos el nombre en la ventana Inmediato.

8.3. LA HOJA
Las hojas de un libro son los objetos Worksheet. A travs de este objeto, con sus propiedades y mtodos, podemos acceder a todo el contenido que exista en la hoja: celdillas, grcos,
elementos visuales como los diagramas, tablas dinmicas, etc. Tambin podemos recuperar y
modicar propiedades que afectan a toda la hoja.
El objeto Worksheet ene gran candad de propiedades, podemos sealar como las ms
importantes:
Names Conene los nombres denidos en la hoja.
Comments Conene Un objeto Comment por cada comentario que haya en la hoja.
Scenarios Cada escenario denido en la hoja ene una correspondencia con un objeto
Scenario.
PivotTables Conene un objeto PivotTable por cada tabla dinmica existente.
ChartObjec Conene un objeto ChartObj ect por cada grco de la hoja.
Algunas de ellas, como es el caso de PivotTables, enen elementos que, a su vez, disponen
de mlples colecciones ms.
Como ocurre con los libros, con las propiedades de worksheet es posible aadir nuevas
hojas, acvar la que nos interese, modicar sus nombres, cerrarlas, etc.
Una de las acciones mas importante que se puede llevar a cabo en un objeto worksheet es
el acceso a los datos existentes en las celdas, existen varias opciones para hacerlo y una de ellas
es mediante la propiedad cells, que necesita como parmetros el nmero de la y columna de
la celda la que vamos a hacer referencia. Otra opcin disponible es Range que acta como
si fuese una matriz, cuyo ndice es una cadena que conene una referencia de una sola celda
o de un rango, en cualquier caso lo que obtenemos es una referencia a ese rango para poder
explorarlo o modicarlo.

En el ejemplo vamos a hallar una serie de nmeros en el que comenzamos por el 1 y vamos
mulplicndolos por 3, comenzamos declarando tres variables, lo primero que hacemos es
obtener una referencia a la hoja de clculo actual, guardndola en la variable Hoja. Fijamos una
celda como punto de origen, asignndole el uno como valor inicial. Por lmo, recorremos
todas las celdillas del rango mulplicando el valor de cada una de ellas por 3 y almacenndolo
en la siguiente. En este caso como el valor que estamos asignando a las variables es una referencia a un objeto, adems del operador igual para realizar la asignacin necesitamos iniciar la
asignacin con la palabra clave Set.
Ejecutamos la macro y vemos el resultado una serie de nmeros completa.

8.4. MANIPULACIN DE DATOS I.


Ya conocemos algunas de las propiedades mas importantes para trabajar con los objetos de
Excel ahora vamos a seguir trabajando para ver como manipular los datos. Por ejemplo como
seleccionar una tabla de datos a parr de una celda. El primer paso es determinar cual es la
celda actual, y tambin como obtener la seleccin actual o marcar un cierto rango, para ello
tenemos tres propiedades AcveCell, Selecon y Range.

La propiedad AcveCell es un objeto Range que conene una referencia a la celda actual.
Siempre que tengamos un objeto Range, podemos obtener la referencia correspondiente de
la propiedad Address.
En AcveCell, la propiedad Address devolver la referencia a la celda acva, aun cuando
hayamos seleccionado un rango, pero si necesitamos acceder no slo a la celda acva sino a
todo el rango actualmente seleccionado, en lugar de AcveCell debemos usar la propiedad
Selecon. Que tambin es un objeto Range y, por lo tanto, dispone de la propiedad Address.
Vamos a ver la diferencia con un ejemplo, tenemos una macro en la que imprimimos el
valor de la propiedad Address de AcveCell y Selecon, mostrando la diferencia entre ambas.

Al ejecutar vemos el valor.

Tambin podemos si es necesario realizar una seleccin de un rango de celdas con una macro sin necesidad de usar el teclado o el ratn, ulizamos AcveSheet el rango que queremos
seleccionar y la propiedad select.

Tambin podemos necesitar acvar una celda concreta para ello usamos la propiedad ac!vate y pasamos como parmetro la celda.

En otras ocasiones podemos querer desplazarnos a una celda sin saber exactamente cual
es, realizando un desplazamiento relavo a parr de otra celda, para ello podemos usar los
mtodos Next y Previous, que devuelven una referencia a la celdilla anterior o siguiente de
una dada. En el ejemplo tenemos dos macros una que mueve hacia delante de la celda acva
y otra hacia atrs.

8.5. MANIPULACIN DE DATOS II.


La propiedad End nos permite buscar la celdilla lmite de una tabla de datos en una direccin indicada mediante una constate, a parr de una celdilla indicada como inicio. Los valores
de esa constante de direccin pueden ser:
xlDown Hacia abajo.
xlUp Hacia arriba.
xlToRight Hacia la derecha.
xlToLe" Hacia la izquierda.
Vamos a ver un ejemplo de una macro que, al ejecutarse, seleccione la tabla de datos a la
que pertenece la celdilla acva.

Comenzamos seleccionando la celda que est ms a la izquierda de la tabla, ulizando


para ello la propiedad End y el mtodo Acvate. En la siguiente lnea hacemos lo mismo pero
ulizando la constan te xlUp, consiguiendo que la celdilla acva sea la que ocupa la posicin superior izquierda en la tabla. El siguiente paso es seleccionar un rango que va desde dicha celda,
que ahora es la acva, hasta la que est ms a la derecha. Con esto tendramos seleccionada
la primera la de la tabla. Por lmo, ulizando una sentencia similar, seleccionamos hasta la
lma la, quedando marcada la tabla completa.

A parte de estas propiedades tenemos otras fundamentales para acceder al contenido de


una celda, Value nos devuelve el contenido de la celda y Formula nos devuelve una cadena de
texto con la frmula propiamente dicha.
A la hora de asignar un contenido a una celda podemos usar indisntamente cualquiera de
las dos propiedades. El resultado ser el mismo.
Para conocer o modicar el formato de las celdas tenemos varias propiedades. Todo lo
relacionado con el po de letra, su tamao o atributos lo encontraremos en la propiedad Font.
La propiedad Borders afecta a los bordes de la celda, estableciendo el po de lnea, grosor y
color, entre otras caracterscas.

En las macros de ejemplo mostramos en la ventana de inmediato el valor de la celda acva


y la formula. Y despus modicamos a negrita el valor de la fuente de la celda seleccionada y
cambiamos el color del borde de la celda.
Podemos tambin querer insertar una hoja nueva e insertar un dato en la nueva hoja insertada, en el ejemplo, creamos una variable hoja despus a esa variable hoja le insertamos un
nuevo objeto hoja que aadimos al libro, despus aadimos un dato en la celda A1 mediante
value.

8.6. USO DE LOS CUADROS DE DIALOGO.


Desde Visual Basic tambin podemos ulizar los cuadros de dialogo que habitualmente
usamos en Excel para facilitar nuestro trabajo. Podemos usar cuadros de dilogo completos,
ventanas simples para solicitar una respuesta por parte del usuario, ya sea pulsando un botn
o bien introduciendo un dato como pueda ser una referencia. Para mostrar un cuadro de dialogo tenemos que usar la propiedad dialogs del objeto Applicaon. Esta propiedad dispone una
coleccin de objetos Dialog, cada uno de los cuales representa a un cierto cuadro de dilogo. El
ndice a ulizar con esa coleccin ser una de las constantes del grupo XlBuilnDialog.

El mtodo Show de cada objeto Dialog nos permite mostrar el cuadro de dialogo, y devuelve un parmetro indicando la accin que a realizado el usuario sobre la ventana. Habitualmente True signica que ha hecho clic en el botn Aceptar, Abrir o equivalente, mientras que False
indica la cancelacin.
Podemos llamar al mtodo Show sin indicar ningn parmetro ya que el nmero de parmetros es variable y, varia dependiendo del cuadro de dilogo de que se trate.
Vemos un ejemplo de una macro en la que mostramos diferentes cuadros de dialogo, en la
primera lnea hacemos aparecer el cuadro de dialogo de alineacin, en la segunda lnea el cuadro de creacin de nombres y en la ulma el cuadro de dialogo de insercin de hipervnculos.
Los valores devueltos indicaran si se ha seleccionado una alineacin, se ha creado un nombre
o se ha insertado el hipervnculo, siendo True en caso armavo.

Al ejecutar la macro y nos aparecen los diferentes cuadros de dialogo de alineacin, de


creacin de nombres, y de insercin de hipervnculos en el que insertamos un hipervnculo en
la hoja de Excel.

8.7. CONFIRMACIN Y PETICIN DE DATOS


Cuando slo necesitamos preguntar al usuario sobre una cuesn que puede responderse
con s o no, aceptar o cancelar, en lugar de un cuadro de dilogo podemos usar la funcin MsgBox. sta hace aparecer una pequea ventana con un texto, opcionalmente un icono y uno o
ms botones en su interior. Dependiendo del botn pulsado, el valor devuelto por la funcin
ser uno u otro.
El primer parmetro que necesita MsgBox es una cadena de caracteres con el mensaje
que debe mostrar en el interior de la ventana. Algunos de los valores que podemos usar como
segundo parmetro son:
VbOKOnly Slo se incluir el botn Aceptar.
VbOKCancel Aparecern los botones Aceptar y Cancelar.
VbYesNo Aparecern los botones S y No.
VbYesNoCancel Aparecern los botones S, No y Cancelar.
VbCrical Se mostrar un icono de advertencia crca.
VbQueson Se muestra una interrogacin.
VbExclamaon Se muestra una exclamacin.
VbInformaon Se muestra el icono de informacin.
VbApplicaonModal Hace que la ventana quede en primer plano impidiendo el acceso a
Excel hasta que no sea cerrada.
Podemos combinar varios de esos valores, por ejemplo podemos mostrar el icono de advertencia y un botn Aceptar. Para crear la combinacin usamos el operador Or, aunque
tambin podemos sumarlos. Los valores devueltos por la funcin son VbOK, VbCaneel, VbYes
o VbNo, segn el botn sobre el que se haya hecho clic de los mostrados.

En el ejemplo tenemos una macro que muestra un msgbox en el que indicamos al usuario
si quiere poner la fecha en la celda acva, si el usuario indica que si se muestra la fecha en la
celda en la celda acva, si dice que no, no ocurre nada.
Si probamos la macro, nos aparece el mensaje y pulsamos que si automcamente no aparece la fecha en la celda acva.

El mtodo de dialogo InputBox del objeto Applicaon puede solicitar multud de datos
disntos al usuario, los posibles valores son
0 El usuario debe introducir una frmula.
1 Debe facilitarse un nmero
2 El dato solicitado es una cadena de caracteres.
4 Se solicita un valor lgico, slo puede ser VERDADERO o FALSO.
8 El usuario debe facilitar una referencia a una celdilla o un rango.
16 El valor a introducir es un cdigo de error.
64 Debe introducirse una matriz de valores.
Estos valores pueden ser combinados, bien sumndolos o con el operador Or. Esto permira mostrar una ventana que, por ejemplo, permiese tanto introducir una frmula como una
referencia a una celdilla que la contuviese.

En el ejemplo tenemos una macro en la que tenemos un InputBox que pide al usuario su
nombre y lo inserta en la celda acva. Ejecutamos la macro y vemos el resultado.

8.8. CUADROS DE DIALOGO PERSONALIZADOS


Pueden exisr situaciones en las que los cuadros de dilogos prediseados que nos ofrece
Excel no sean los ms adecuados, y es necesario crear un cuadro a medida que nos permita
realizar las acciones que necesitamos, estos cuadros personalizados son los formularios.
Para insertar un formulario a una hoja de calculo desde el editor de visual Basic en el men
insertar elegimos userform.

Nos aparece una ventana que conene un formulario vaco, por una parte, y una paleta
con los diversos controles que se puede insertar en el formulario. La insercin de los controles
se efecta mediante el ratn, haciendo clic en la paleta para seleccionar el control y despus
en el formulario para insertarlo.

Al insertar un formulario ste recibe un nombre y un tulo por defecto. El nombre se encuentra en la propiedad Name, y el tulo en la propiedad Capon.

Podemos editar estas propiedades en la ventana de Propiedades de Visual Basic, con los
valores que elijamos, por ejemplo Cdialog para el nombre y Datos personales para el Capon.
Un formulario vaco es una ventana sin mucha ulidad, ya que slo conene un tulo y el
botn de cierre. Para que sirva para algo tenemos que incluir en l componentes, tenemos
diferentes pos la equeta Label que se uliza para mostrar textos y tulos en el formulario,
Cuadro de texto o TextBox es un recuadro para solicitar un dato, como puede ser un texto o un
nmero. RefEdit es un Recuadro que sirve para solicitar una referencia a una celdilla o rango,
OponBu!on o botn de opcin es un Botn que permite la seleccin de mlples opciones
exclusivas entre s, CheckBox o casilla de vericar es una Casilla de acvacin/desacvacin de
opciones. CommandBu!on o botn de comando es un Botn tradicional para pulsar ejecutando una accin.

Insertar una serie de componentes en el formulario una equeta con el capon nombre, a
su lado una caja de texto, otra equeta con el capon Apellidos y a su lado una caja de texto,
una ulma equeta con el capon Fecha Nac y a su lado otra caja de texto, debajo de estos
datos insertamos dos botones uno con el capon agregar y otro con el capon cerrar.

Cada componente posee conjunto de propiedades, muchas de ellas comunes a los dems
componentes. Por ejemplo Label, CommandBu!on, OponBu!on y CheckBox disponen de
una propiedad, llamada Capon, que permite establecer el texto que se ve en el interior o al
lado del componente. Los botones, al ser pulsados o seleccionados, generan un evento Clic que
puede ser usado para responder a esa accin. Los controles CheckBox y OponBu!on cuentan
con la propiedad Value, que con su valor, True o False, indica si la opcin ha sido elegida o no.

Cuando es necesario solicitar un dato, como por ejemplo un nmero, un texto o una referencia, debemos usar componentes como por ejemplo el componente TextBox y RefEdit, los
dos disponen de una propiedad Text donde almacenan el valor introducido. TextBox se usa
para datos en general, y RefEdit para solicitar referencias a celdas o rangos, este componente
permite acceder a la hoja de clculo para seleccionar interacvamente la referencia.
Al mostrar el cuadro de dilogo, el acceso a los componentes es igual a cualquier otra ventana, al entrar hay un control acvo y ulizando la tecla Tab vamos accediendo a los dems.
Todos los controles cuentan con las propiedades TabStop con la que indicaremos si debe accederse o no al control usando la tecla Tab, por defecto esta a true y TabIndex establece el orden de acceso a los componentes. Su contenido es un nmero que indica la posicin que ocupa
el control en ese orden de acceso, independientemente de su posicin sica en el formulario.

Podemos indicar el valor de la propiedad TabIndex de cada componente, accediendo al


men emergente asociado al formulario, y eligiendo la opcin orden de tabulacin, aqu seleccionamos el control y pulsamos los botones mover arriba, mover abajo para colocar el control
en la posicin elegida.
Tambin podemos acceder al cdigo fuente del formulario. Tenemos una primera funcin
que corresponde con el evento clic del botn agregar, donde comenzamos creando las variables necesarias, una para controlar la la, otra de po hoja, que igualamos a la primera hoja
del libro.

Despus buscamos la primera celda vaca, el siguiente paso es vericar que se ingresa un
nombre en el formulario, una vez que tenemos el nombre insertamos los datos introducidos
en las correspondientes celdas de la base de datos, por ulmo limpiamos el formulario por si
el usuario quiere introducir otro dato.

En el evento clic del botn cerrar, lo nico que tenemos que hacer es cerrar el formulario.
Si probamos al macro, al ejecutarla se muestra el formulario y podemos introducir los datos, primero el nombre, los apellidos y la fecha de nacimiento, pulsamos agregar y el dato se
inserta en la primera la, insertamos otro dato mas, el nombre, los apellidos y la fecha de nacimiento. Al agregar aparecen los datos en el formulario.

Вам также может понравиться