Ayuda con un arreglo

Sub Tomadedatos(ByVal fi, ByVal ci, tamresp)
Dim tampresp As Integer
Dim matriztotales(7) As Integer
For i = 1 To tamresp
    matriztotales(i) = Cells(fi + i - 1, ci)
Next
Con esta macro pretendo crear un vector de respuestas el problema es que necesito definir el tamaño del arreglo, la variable tamresp contiene el tamaño requerido pero cuando en ves de ese 7 que aparece ahí pongo tamresp me da error.
Por lo que necesito saber como definir el tamaño del arreglo a través de una variable o como aumentarle o restarle ese tamaño por medio de variables, por ejemplo definir que sea de 2,2 o solo de 2 y luego hacer que sea de 4,4 o de 1,1,.

2 Respuestas

Respuesta
1
Lo que pasa es que al declara la matriz ya la dimensionaste y solo admite un integer
te sugiero declararla sin dimensiones y luego redimensionarla utilizando la variable
Sub Tomadedatos(ByVal fi, ByVal ci, tamresp)
Dim tampresp As Integer
Dim matriztotales() As Integer
Redim matriztotales(tamresp)
For i = 1 To tamresp
    matriztotales(i) = Cells(fi + i - 1, ci)
Next
hey muchas gracias, precisamente quería saber si se podían redimensionar y no sabia que podías no dimensionarla para crearla, mejor respuesta imposible
Gracias
Respuesta
1
Solución:
-
Dim matriztotales(1 To 7) As Integer
¿Qué se supone que hace?
Establece que los índices inician en 1 y terminan en 7. Como lo tienes en tu código, sí, efectivamente son 7 los elementos de tu arreglo, pero los índices inician en 0 y terminan en 6 (0,1,2,3,4,5,6), que si bien son 7 valores, cuando accedes al supuesto valor con el de la variabe "tamresp", que tiene un valor absoluto de 7, el error es del tipo "ubound", es decir, fuera de límite.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas