Trabajando con objetos

Tal vez haya escuchado hablar de programación estructurada, modular,( algo menos ) lógica, funcional, concurrente, y la que vamos a tratar a continuación la POO (programación orientada a objetos).

La programación estructurada  es un tipo de programación que usa una lógica secuencial en su estructura, con estructuras de control, secuenciales y repetitivas. Es una forma de programar que tiene sus ventajas e inconvenientes, pero que, siendo profusamente utilizado en los años 60 se ha quedado un pco corto a la hora de cubrir las necesidades de aplicaciones gráficas.

No es objeto de este post entrar a describir los otros tipos de programación, ya que VBA es un lenguaje orientado a objetos, y por ello nos vamos a centrar en él.

Un objeto, diccionario en mano, es cualquier cosa perceptible por uno o más sentidos, especialmente algo que se puede ver y sentir.

Para VBA entendamos que un objeto es cualquier cosa dentro de la aplicación que puede manipularse de alguna forma.

Al igual que un vehículo, que como tal es un objeto, dentro del mismo existen otros objetos tales como las ruedas, las puertas, los retrovisores. Tanto el objeto vehículo como sus objetos inherentes tienen una serie de propiedades, como modelo, color, motor…Los métodos del coche definen que podemos hacer con él: frenar, girar,…

Los eventos del vehículo nos dice las cosas que le ocurren, si dejamos las luces encendidas y salimos un pitido nos avisa del hecho, etc.

Si analiza un poco lo descrito observará que existe una organización intrínseca en el modelo orientado a objetos. Es decir se da una jerarquía desde los niveles superiores (más genéricos) hasta los niveles inferiores más específicos.

Algunas propiedades también realizan la función de objetos. Por ejemplo el objeto Application tiene una propiedad ActiveWindow (nombre de la ventana activa) que a su vez en sí misma es un objeto. Esto puede dar lugar a confunsiones en la sintáxis. Por ejemplo:

Application.ActiveWindow.ActiveCell.Font.Italic

Puede abreviarse y quedaría así:

ActiveCell.Font.Italic