Cómo Utilizar las Estructuras VBA

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on marzo 28, 2023

Este tutorial mostrará cómo utilizar estructuras en VBA.

Una estructura en VBA es esencialmente un tipo de datos definido por el usuario. Cuando usamos variables en VBA, podemos declararlas como variables de cadena, variables numéricas, etc. Crear una estructura esencialmente crea un nuevo tipo de variable, la estructura misma puede contener múltiples tipos de datos. Muchos usos de Excel utilizan módulos de clase en lugar de estructuras, pero eso puede significar que termines con una cantidad innecesaria de módulos de clase individuales.

Definición de una Estructura

Una estructura comienza con la palabra Tipo y termina con Tipo Final.

Type Proveedor
 Nombre As String
 Telefono As String
 Direccion As String
 Vendedor As String
End Type

Para utilizar esta estructura dentro de un procedimiento, podemos hacer lo siguiente:

Sub PruebaProveedor()
    Dim strP As Proveedor
    strP.Nombre = "Fred Jones"
    strP.Telefono = " 123 Oak Lane, Cleveland"
    strP.Direccion = "4589341"
    strP.Vendedor = "Jim"
End Sub

Un tipo es esencialmente una forma de agrupar variables que están relacionadas entre sí, como los datos del cliente.

Una estructura necesita ser almacenada en un módulo y necesita estar en la parte superior del módulo donde se almacenarían las variables del módulo.

Estructura Definida en un Módulo

Una estructura no puede ser almacenada en un módulo de clase o módulo de formulario – si usted fuera a almacenar el tipo en el módulo de clase y luego tratara de llamar al tipo desde un módulo o incluso desde dentro de esa clase, terminaría ocurriendo un error.

Error de Compilación

 

Utilizando una Estructura para Obtener Datos de un Rango

En nuestro libro de trabajo, tenemos la siguiente tabla de datos:

Tabla Datos Ejemplo

 

Ahora podemos crear una estructura en un nuevo módulo para almacenar el Nombre del Empleado, la Edad y la Descripción del Puesto.

Type Empleados
 EmpNombre As String
 EmpEdad As Integer
 EmpPuesto As String
End Type

Ahora podemos crear una rutina para hacer un bucle a través de un rango en Excel y rellenar el tipo con múltiples empleados.

Sub obtenerEmpleadoss()
  Dim Empleado() As Empleados
  Dim i As Integer
  ReDim Empleado(10)
  For i = 0 To 9
    Empleado(i).EmpNombre = Range("B" & i + 2)
    Empleado(i).EmpEdad = Range("C" & i + 2)
    Empleado(i).EmpPuesto = Range("D" & i + 2)
  Next i
'mostrar en ventana inmediata
  For i = 0 To 9
    Debug.Print (Empleado(i).EmpNombre & " tiene " & Empleado(i).EmpEdad & " años de edad y trabaja como: " & Empleado(i).EmpPuesto)
  Next i
End Sub

Primero declaramos un array variable como una variable Empleados. Luego dimensionamos el array y hacemos un bucle a través de un rango de celdas en un libro de Excel para poblar el array. A continuación, mostramos los resultados en la ventana de depuración (inmediata).

Resultado Ventana Inmediato Prueba de Obtener Datos

 

Estructuras Anidadas

Considere las siguientes estructuras:

Estructuras de Ejemplo

 

Ahora, pongamos una tercera estructura debajo de estas 2:

Type Factura
  FacVen As Empleados
  FacCli As Clientes
End Type

Donde la variable FacVen ha sido definida como una variable de tipo Empleados, mientras que la variable FacCli ha sido definida como una variable de tipo Clientes.

Por lo tanto, podemos desglosar nuestro procedimiento para rellenar algunas variables.

Cuando creemos nuestro procedimiento, aparecerá una lista desplegable mostrando las variables disponibles en cada tipo.

Procedimiento Obtener Información Clientes

 

Por lo tanto, podemos rellenar nuestras variables como se muestra en el siguiente procedimiento:

Sub ObtenerInfo()
  Dim strFact As Factura
  strFact.FacCli.CliNombre = "Bob Smith"
  strFact.FacCli.CliDir = "123 Oak Lane, Cleveland"
  strFact.FacVen.EmpNombre = "Fred Lindburgh"
  strFact.FacVen.EmpPuesto = "Gerente de Ventas"
End Sub
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples