¿Cómo usar estructuras en VBA? Los tipos de datos definidos por el usuario

Digamos que está intentando crear un sistema de gestión escolar. Aquí, tendrás diferentes tipos de variables como el nombre del estudiante, el número de registro del estudiante, la clase, etc. Una escuela también tiene maestros, por lo que habrá nombres de maestros, asignaturas del maestro, clases, etc. De manera similar, habrá muchos otros objetos como , bibliotecario, clases, principio, etc. Ahora tener diferentes variables para cada entidad en la escuela será un trabajo complicado. ¿Qué tal crear un tipo de datos de alumno, profesor, clases, etc. que almacene valores relacionados con ellos? Para esto podemos usar tipos de datos definidos de VBA.

En este artículo, aprenderemos cómo puede crear su propio tipo de datos en VBA. Se les conoce como UDT de VBA.

Definición de un tipo de datos definido por el usuario

Para definir una estructura o UDT en VBA usamos el bloque Type___End Type. Aquí está la sintaxis de un UDT.

Escriba Tname_Of_Data_Type var1 como tipo de datos 'el tipo de datos puede ser cualquier cosa, int, matriz o incluso UDT var2 como tipo de datos Var3 () como tipo de datos --- VarN () como tipo de datos Tipo final 

Entonces, para definir un tipo de datos personalizado en VBA, comenzamos con Type Keyword. Luego escribimos el nombre de nuestro tipo de datos personalizado. Es una convención usar T antes del nombre del tipo de datos para que pueda diferenciar entre colecciones vba y UDT.

Los tipos de datos pueden ser cualquier cosa. Y Integer, String, Variant, otro UDT, Arrays, colecciones, cualquier cosa.

Para usar su UDT en el programa, declare su variable como cualquier otra variable.

Sub UseUDT 'Declarando variable de tipo de datos definido por el usuario Dim myVar1 como Tname_Of_Data_Type Dim myVar2 como Tname_Of_Data_Type End Sub 

Sencillo. Ahora, para usar las variables dentro de este UDT, usamos el operador de punto. Utilice el nombre del tipo de datos seguido de un punto y el nombre de la variable dentro.

Sub UseUDT 'Declarando variable de tipo de datos definido por el usuario Dim myVar1 como Tname_Of_Data_Type Dim myVar2 como Tname_Of_Data_Type myVar1.var1 = "Abcd" myVar2.Var2 = "xyvz" End Sub 

Basta de teoría, saltemos a un ejemplo para ver cómo funciona.

Cree una variable de estudiante que almacene información relacionada con el estudiante

Así que tenemos la tarea de crear un tipo de datos definido por el usuario que almacene información relacionada con los estudiantes.

Un estudiante tiene un nombre, apellido, número de lista, fecha de nacimiento, clase, sección, materias.

Así que creémoslo.

'Creó un tipo de datos de estudiante público Tipo público Tstudent fName como cadena' Para el nombre lName como cadena 'Para el apellido rNo como entero' Para el número de lista clss Como cadena 'Para la sección de clase Como cadena' Para los temas de nombre de sección () Como cadena ' Para las asignaturas del tipo de finalización del estudiante 'Use este tipo de Tstudent en la subrutina Sub StudentsInfo ()' Creación e inicialización de la variable de tipo de estudiante Dim student1 Como Tstudent student1.fName = "Manish" student1.lName = "Singh" student1.rNo = 12334 student1.clss = 10 student1.section = "A" ReDim student1.subjects (2) student1.subjects (0) = "física" student1.subjects (1) = "Math" 'Imprimiendo los detalles del estudiante. Debug.Print (student1.fName) Debug.Print (student1.lName) Debug.Print (student1.rNo) Debug.Print (student1.clss) Debug.Print (student1.section) Debug.Print (student1.subjects (0) ) Debug.Print (student1.subjects (1)) End Sub 

Cuando ejecute el sub anterior, imprimirá el resultado como se muestra a continuación:

Manish

Singh

12334

10

A

física

Matemáticas

Crear una matriz de UDT y acceder a elementos

Del mismo modo, puede crear tantas variables como necesite del tipo Tstudent. Incluso puede crear una matriz de tipo Tstudent como cualquier otro tipo de datos.

Tipo público Tstudent fName como cadena 'Para el primer nombre lName como cadena' Para el apellido rNo como entero 'Para el número de lista clss Como cadena' Para la sección de clase Como cadena 'Para las materias del nombre de la sección () Como cadena' Para las materias del tipo de final del estudiante ' Crear una matriz de Tstudents escriba Sub SchoolInfo () Dim schoolName As String Dim estudiantes () As Tstudent schoolName = "Senior School" ReDim estudiantes (10) For i = 0 To 9 Students (i) .fName = "name" & Str ( i + 1) estudiantes (i) .rNo = i + 1 Siguiente i Debug.Print ("Nombre: Roll No") Para i = 0 a 9 Debug.Print (estudiantes (i) .fName & ":" & estudiantes ( i) .rNo) Siguiente i Fin Sub 

Cuando ejecute este código, se imprimirá en la ventana inmediata.

Nombre: Roll No

nombre 1: 1

nombre 2: 2

nombre 3: 3

nombre 4: 4

nombre 5: 5

nombre 6: 6

nombre 7: 7

nombre 8: 8

nombre 9: 9

nombre 10:10

En el código anterior, primero se definió la estructura UDT antes y el sub (explicaré más adelante por qué). Acabamos de crear una matriz usando una palabra clave tenue como lo hacemos para cualquier variable en VBA.

Luego usamos Redim para definir el tamaño de las matrices. Luego usamos un bucle for para inicializar la matriz.

Para acceder a los elementos de la estructura usamos otro bucle for. Eso es.

¿Por qué declaramos UDT en la parte superior del módulo?

Si declaramos un UDT primero en un módulo, fuera de cualquier subrutina o función, está disponible para todos los módulos en el libro de trabajo. Significa que si tiene cien subs y funciones en un módulo, todos ellos pueden declarar variables de tipo Student en su cuerpo.

Si el UDT no es privado, estará disponible para todos los módulos del libro de trabajo. Si desea que una estructura (UDT) esté disponible solo para un módulo contenedor, declare que es privada.

Tipo privado Tstudent fName como cadena lName como cadena rNo como entero clss Como sección de entero Como sujetos de cadena () Como tipo de fin de cadena 

No puede tener UDT a nivel de procedimiento. Significa que no puede definir un tipo de datos definido por el usuario dentro de una subrutina o función.

Tipos anidados definidos por el usuario

Digamos que tiene UDT llamado automóvil. El coche tiene sus propios elementos. De manera similar, tiene un UDT llamado bicicleta que puede tener sus propias propiedades.

Ahora digamos que necesita un tipo de datos llamado vehículo. El vehículo puede tener un automóvil y una bicicleta como elementos. ¿Podemos hacer esto? Sí, podemos hacer esto. Ver el siguiente código

Tipo privado Asientos de Tcar Como Entero ac Como Tipo booleano Como Color de cadena Como fabricante de Cadena Como Dop de cadena Como Fecha rc_no Como Tipo de final de cadena Tipo privado Asientos de Tbike Como Tipo de entero Como Color de cadena Como fabricante de cadena Como Dop de cadena Como Fecha rc_no Como Tipo de final de cadena Privado Escriba Tvehicle number_of_Vehicle As Integer bike As Tbike car As Tcar End Type Sub vehicleVarification () Dim myVehicles As Tvehicle myVehicles.number_of_Vehicle = 2 myVehicles.bike.seats = 1 myVehicles.bike.typ = "Racing" myVehicles.car.seats = " "myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub 

Aquí, hemos definido tres tipos de datos definidos por el usuario. Primero está Tcar que contiene información relacionada con los automóviles. En segundo lugar está la bicicleta, también contiene información sobre la bicicleta.

El tercer UDT es Tvehicle. Contiene una variable para almacenar el número de vehículos y dos variables de tipo Tcar y Tbike.

Vehículo de tipo privado

number_of_Vehicle como entero

bicicleta como tbike

coche como Tcar

Tipo final

Para acceder a las variables de Tcar y Tbike podemos usar el tipo de datos Tvehicle. En el sub, hemos definido solo una variable del tipo Tvehicle como myVehicles. Cuando creamos esta variable, VBA también crea variables de Tcar y Tbike.

Para inicializar y acceder a las variables de Tcar y Tcar, podemos usar la variable myVehicle. Como puede ver en el código.

myVehicles.number_of_Vehicle = 2

myVehicles.bike.seats = 1

myVehicles.bike.typ = "Carreras"

myVehicles.car.seats = "4"

myVehicles.car.ac = Verdadero

Cuando ejecutamos el sub, así ocurre el resultado.

Esta característica realmente aumenta exponencialmente el poder de programar VBA. Puede estructurar su tipo de datos como entidades del mundo real. Puede crear relaciones entre tipos de datos que pueden resultar útiles en un gran proyecto.

Así que sí, chicos, así es como pueden crear y usar un tipo de datos o estructura definidos por el usuario en VBA. Espero haber podido explicarlo. Si tiene alguna pregunta con respecto a este artículo o cualquier otra pregunta relacionada con VBA, pregúnteme en la sección de comentarios a continuación. Estaré muy feliz de saber de ti.

Variables de VBA en Excel| VBA son las siglas de Visual Basic para Aplicaciones. Es un lenguaje de programación de Microsoft. Se utiliza con aplicaciones de Microsoft Office como MSExcel, MS-Word y MS-Access, mientras que las variables de VBA son palabras clave específicas.

Alcance variable de Excel VBA| En todos los lenguajes de programación, tenemos especificadores de acceso a variables que definen desde dónde se puede acceder a una variable definida. Excel VBA no es una excepción. VBA también tiene especificadores de alcance.

Argumentos ByRef y ByVal | Cuando se pasa un argumento como argumento ByRef a una función o sub diferente, se envía la referencia de la variable real. Cualquier cambio realizado en la copia de la variable se reflejará en el argumento original.

Elimine hojas sin mensajes de confirmación usando VBA en Microsoft Excel | Dado que está eliminando hojas usando VBA, sabe lo que está haciendo. Le gustaría decirle a Excel que no muestre esta advertencia y elimine la maldita hoja.

Agregar y guardar un nuevo libro de trabajo usando VBA en Microsoft Excel 2016| En este código, primero creamos una referencia a un objeto de libro de trabajo. Y luego lo inicializamos con un nuevo objeto de libro de trabajo. El beneficio de este enfoque es que puede realizar operaciones en este nuevo libro de trabajo fácilmente. Como guardar, cerrar, borrar, etc.

Mostrar un mensaje en la barra de estado de Excel VBA| La barra de estado en Excel se puede utilizar como monitor de código. Cuando su código VBA es extenso y realiza varias tareas usando VBA, a menudo deshabilita la actualización de la pantalla para que no vea que la pantalla parpadea.

Desactive los mensajes de advertencia con VBA en Microsoft Excel 2016| Este código no solo deshabilita las alertas de VBA, sino que también aumenta la eficiencia de tiempo del código. Veamos cómo.

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 valores específicos. La función Countif es esencial para preparar su tablero.

Cómo usar la función SUMIF en Excel | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave