es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear una matriz de registros en VBA.

Quiero crear una matriz de registros en VBA, por ejemplo, así:

Índice    Nombre   Edad
0         Anton    40
1         Bert     35
...       ...      ...
9         Julia    20

Hice una implementación rápida y sucia utilizando dos matrices:

Dim arrName(0 To 9) As String
Dim arrAge(0 To 9) As Integer

arrName(0) = "Anton"   
arrName(1) = "Bert"    
arrAge(0) = 40
arrAge(1) = 35

También podría hacerlo como una matriz bidimensional, pero estoy tratando de evitar el uso del tipo de datos Variant. (“por razones” que no beneficiarían la pregunta si las explicara detalladamente).

Pensé que VBA tendría algún tipo de tipo de dato registro implementado, pero al buscar “registro de datos”, “colección de datos”, etc., la mayoría de los resultados me remiten a una implementación utilizando objetos, como esta, lo cual estaría bien, pero quiero mantener el código lo más “simple posible” sin introducir objetos para almacenamiento de datos (sí, sé que las hojas de cálculo también son objetos, aún estoy tratando de evitarlo).

¿No hay un tipo de dato registro implementado en VBA o simplemente estoy usando la palabra clave incorrecta en mi búsqueda? Agradecería mucho alguna pista.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, VBA no tiene implementado un tipo de dato de registro específico. Por lo general, se utilizan arrays, colecciones u objetos para el almacenamiento de datos. Sin embargo, como mencionaste, usar objetos puede no ser ideal en tu caso. Si estás tratando de evitar el uso del tipo de dato “variant”, podrías usar un array bidimensional de la siguiente manera:

    Dim registros(0 To 9, 0 To 1) As Variant
    
    registros(0, 0) = "Anton"
    registros(0, 1) = 40
    registros(1, 0) = "Bert"
    registros(1, 1) = 35
    
    '... y así sucesivamente para el resto de los registros
    

    Esto crea un array bidimensional donde la primera dimensión corresponde a los registros y la segunda dimensión corresponde a los campos de cada registro. Esto debería permitirte crear una estructura similar a un registro sin usar objetos ni variantes.

Comments are closed.