Los módulos de clase de VBA y cómo utilizarlos
¿Qué es una clase en VBA?
Una clase es un modelo para crear un objeto. Una clase en sí misma no hace nada, pero usando clases puede crear múltiples objetos idénticos que pueden realizar operaciones o pueden usarse como recurso de datos.
En la vida real, el modelo (diseño y funcionalidades) de un automóvil es una clase y el automóvil en sí es un objeto de esa clase. En la clase, definimos lo que tiene el automóvil y lo que puede hacer. Por ejemplo, un automóvil tiene 4 ruedas, 5 marchas, volante, etc. Estos son atributos / propiedades.
También definimos lo que puede hacer un automóvil, como avanzar, retroceder, girar, etc. Estas son funciones de la clase de automóvil. Un objeto de automóvil creado con la clase de automóvil tendrá todas estas propiedades. Si define un automóvil que tiene 5 ruedas, entonces un automóvil creado con esta clase tendrá 5 ruedas. Tú entiendes.
Suficiente de teoría, ahora veamos cómo puede usar un módulo de clase en VBA.
Usando el módulo de clase Excel VBA
Mientras trabajaba en VBA, debe haber utilizado Range («A1») .select. El rango es una clase predefinida en VBA. La selección es una de las funciones de la clase Rango que selecciona el rango especificado. De manera similar, Debug es una clase en VBA e imprimir y afirmar son sus métodos. Las hojas de trabajo, los libros de trabajo, el rango, etc.son clases de VBA que usamos en nuestros subs.
Crea tu propia clase
Primero, necesitamos agregar un módulo de clase en VBA Presione la combinación de teclas ALT + F11 para abrir el editor de Excel VBA.
-
Haga clic con el botón derecho en el explorador de proyectos. Mueva el cursor a Insertar → Módulo de clase. Haz click en eso. Lo mismo se puede hacer desde el menú Insertar.
-
La clase se agregará a la carpeta «Módulo de clase». El nombre predeterminado es como clase1, clase2, etc. Puede cambiar el nombre de la clase desde la ventana de propiedades. Llamemos a nuestra clase «Bienvenida».
Ahora creemos y agreguemos algunos atributos a nuestra clase. Como quiero que estos atributos estén disponibles para el público, utilicé el operador de accesibilidad * public.
Public name As String Public var1 As Integer Public var2 As Integer
-
Ahora agreguemos una función a esta clase. ¡Quiero una función que diga Hola! al usuario. Para hacerlo, agregue un sub y asígnele el nombre sayHiTo.
Sub sayHiTo(user As String) name = user MsgBox ("Hi! " & name) End Sub
-
Ahora usemos class en un módulo. Inserte un nuevo módulo si no tiene ninguno. Escribe un sub. He nombrado mi subprueba.
Sub test() Dim wc As New Welcome 'Declared and initialized Welcome object wc.sayHiTo ("Jack") 'used sayHiTo method of Welcome Object. End Sub
-
Ejecute esta subprueba con la tecla F5. Le indicará «¡Hola! Jack» en el libro de Excel.
¿Cómo funciona?
En la subprueba, hemos creado un objeto «wc» de Welcomeclass. Un objeto se crea en VBA en dos métodos. ejecutamos el código, Test sub crea un objeto wc de la clase Welcome. Este objeto tiene todas las propiedades de la clase Welcome. Usamos el método sayHiTo de la clase Welcome para saludar al usuario.
Creación de objetos en Excel VBA
-
.. Creación instantánea En la creación instantánea, creamos un objeto mientras declaramos el objeto con la clave «nuevo». En nuestro ejemplo anterior, hemos utilizado la creación instantánea.
Dim wc As New Welcome
{vacío} 2. Creación retrasada En la creación retrasada, primero declaramos solo el objeto. No usamos la palabra clave «nueva». Para usar el objeto, necesitamos inicializarlo con la palabra clave «nueva».
Sub test() Dim wc As Welcome 'wc.sayHiTo ("Jack") 'generates error since wc is not initialised yet 'initialising object Set wc = New Welcome wc.sayHiTo ("Cory") 'this will work. End Sub
Accediendo a las variables de una clase
En los ejemplos anteriores, hemos utilizado variables públicas para la clase, pero no es correcto practicar. Debemos evitar el uso de variables públicas en una clase.
Ahora la pregunta es cómo accederíamos a las variables de la clase. Anteriormente, usamos una subrutina para acceder al nombre, pero las clases de VBA proporcionan propiedades que se utilizan para actualizar y recuperar sistemáticamente los valores de las variables privadas de la clase. Las propiedades son más elegantes que las funciones secundarias o para actualizar y acceder a variables privadas. Veamos cómo.
Sintaxis de la propiedad de clase
Private name As String Private var1 As Integer Private var2 As Integer Property Let MyName(nm As String) name = nm End Property Property Get MyName() As String MyName = name End Property
Usémoslos en un módulo.
Sub test() 'creating class object Dim wc As New Welcome Dim wc1 As New Welcome 'using properties wc.MyName = "Exceltip.com" wc1.MyName = "ExcelForum.com" Debug.Print wc.MyName Debug.Print wc1.MyName End Sub
Cuando ejecute este sub de prueba, obtendrá dos nombres impresos para dos objetos de la clase «Bienvenida».
En qué se diferencian las propiedades de las sub y las funciones
En el ejemplo anterior, observe que hemos utilizado la propiedad MyName como variable. Inicializamos el valor de la variable «Nombre» simplemente escribiendo wc.MyName = «assdf». Esta línea de comando llamó a la propiedad llamada Propiedad Get MyName () As String. No pasamos ningún valor entre paréntesis como hicimos al principio.
De manera similar, para imprimir los valores de la variable «Nombre» usamos commandDebug.Print wc.MyName. ¿No es tan simple como la inicialización de una variable normal? La única diferencia es que puede hacer mucho en el segmento de la propiedad. Pones validación de datos, cálculo, comunicación, etc. y el usuario solo verá el resultado.
Otra diferencia es que podemos usar el mismo nombre de la propiedad para alquilar y obtener * parte. Esto lo hace más fácil y menos confuso.
Así que sí, chicos, este fue un ejemplo simple de un módulo de clase en Excel VBA.
Esto es solo la punta del iceberg, hay mucho jugo en este tema que exploraremos en artículos posteriores. Exploraremos cada uno de ellos uno a uno de la forma más sencilla posible. Espero haber sido lo suficientemente explicativo para hacerles entender esto. Si tiene alguna duda con respecto a este tema o cualquier otro tema de Excel VBA, menciónelo en la sección de comentarios a continuación.
Artículos relacionados:
`link: / modules-class-modules-in-vba-insert-a-new-module-from-a-file-using-vba-in-microsoft-excel [Importar un módulo de un archivo usando VBA en Microsoft Excel] `| Aprenda a importar el módulo completo desde otro archivo usando VBA.
link: / modules-class-modules-in-vba-create-a-new-module-using-vba-in-microsoft-excel [Crear un nuevo módulo usando VBA en Microsoft Excel]
| Puede usar un módulo para crear otro modelo en VBA. Esto puede ayudarlo a minimizar el trabajo aéreo adicional.
link: / modules-class-modules-in-vba-add-a-procedure-to-a-module-using-vba-in-microsoft-excel [Agregar un procedimiento a un módulo usando VBA en Microsoft Excel]
| Para agregar procedimientos a los módulos, use automáticamente este código VBA.
Artículos populares:
link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-incrementa-your-productividad [50 accesos directos de Excel para aumentar su productividad]
| Acelera tu tarea. Estos 50 atajos lo harán trabajar aún más rápido en Excel.
enlace: / fórmulas-y-funciones-introducción-de-función-vlookup [La función BUSCARV en Excel]
| Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas. enlace: / tips-countif-in-microsoft-excel [COUNTIF en Excel 2016]
| Cuente valores con condiciones usando esta asombrosa función.
No necesita filtrar sus datos para contar un valor específico. La función Countif es esencial para preparar su tablero.
link: / excel-formula-and-function-excel-sumif-function [Cómo utilizar la función SUMIF en Excel]
| Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.