Módulos de clase VBA y cómo usarlos

Anonim

¿Qué es una clase en VBA?

Una clase es un plano para la creación de un objeto. Una clase en sí misma no hace nada, pero al usar clases, puede crear varios objetos idénticos que pueden realizar operaciones o pueden usarse como un 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 qué tiene el automóvil y qué puede hacer. Por ejemplo, un automóvil tiene 4 ruedas, 5 velocidades, 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 class1, class2, 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é operador de accesibilidad público.
    Nombre público como cadena Public var1 como entero Public var2 como entero 
  • 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 (usuario como cadena) nombre = usuario MsgBox ("¡Hola!" & Nombre) 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.
    Subprueba () Dim wc As New Welcome 'Objeto de bienvenida declarado e inicializado wc.sayHiTo ("Jack")' utilizó el método sayHiTo del objeto de bienvenida. End Sub 
  • Ejecute esta subprueba con la tecla F5. Le indicará "¡Hola! Jack" en el libro de Excel.

¿Como funciona?

En la subprueba, hemos creado un objeto "wc" de Bienvenido clase. 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

    1. 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 como nuevo bienvenido

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".

Subprueba () Dim wc As Welcome 'wc.sayHiTo ("Jack")' genera un error ya que wc aún no se ha inicializado 'inicializando objeto Set wc = New Welcome wc.sayHiTo ("Cory")' esto funcionará. End Sub 

Acceder 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

Nombre privado como cadena Privado var1 como entero Privado var2 como entero Propiedad alquilada MyName (nm como cadena) name = nm End Property Propiedad Obtener MyName () como cadena MyName = nombre Fin de la propiedad 

Usémoslos en un módulo.

Subprueba () 'creando objeto de clase Dim wc As New Welcome Dim wc1 As New Welcome' usando las propiedades 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 funciones secundarias y funciones

En el ejemplo anterior, observe que hemos utilizado la propiedad MyName como variable. Inicializamos el valor de la variable "Nombre" con solo escribir wc.MyName = "assdf". Esta línea de comando llamó a la propiedad llamadaPropiedad Obtenga MyName () como cadena. No pasamos ningún valor entre paréntesis como hicimos al principio.

De manera similar, para imprimir los valores de la variable "Nombre" usamos el comandoDebug.Print wc.MyName. ¿No es tan simple como la inicialización de variables normal? La única diferencia es que puedes hacer mucho en elpropiedad segmento. 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 dejar y obtenerparte. 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.

Importar un módulo desde un archivo usando VBA en Microsoft Excel | Aprenda a importar el módulo completo desde otro archivo usando VBA.

Cree 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 los gastos generales adicionales.

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.

Articulos populares:

50 accesos directos de Excel para aumentar su productividad | Acelera tu tarea. Estos 50 accesos directos le permitirán trabajar aún más rápido en Excel.

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.

CONTAR.SI 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.

Cómo utilizar la función SUMIF en Excel »Wiki Ùtil Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.