En este grupo En todos

Foro de Excel



Redimensionar Matrices en VBA

Felipe
Ingenieria comercial universidad de ch...
Escrito por Felipe Prado
el 10/02/2011

Estimados, no logro solucionar este problema...

Quiero crear una matriz de datos para luego traspasarla a un ListBox de un formulario, pero las dimensiones las obtengo despues de crear la matriz, entonces que dimensiones iniciales le doy? , intente usar redim pero me arroja error:

(las filas son variables, pero las columnas son 4)

Dim Data(1 to 5,1 to 4) as variant
i=0
For each celda in range(cells(fila1,7),cells(fila2,7)) 'fila1 y fila2 se obtienen de un bucle
anterior para determinar un rango
especifico
if celda<>0 then
i=i+1
data(i,1)=celda. Offset(0,-1)
data(i,2)=celda. Offset(0,-2)
data(i,3)=celda. Offset(0,-3)
data(i,4)=celda. Offset(0,-4)
end if
Next

ListBox1. ColumnCount = 4
ListBox1. List = data

Pero el cuadro de lista me muestra 5 filas (tiene activada la opcion listStyle=ListStyleoption)

Espero haber sido claro...

Mil gracias..

Cacho Rodríguez
Ingeniería electrónica universidad nac...
Escrito por Cacho Rodríguez
el 10/02/2011

No estoy muy seguro de haberte entendido. Sin embargo intenta con:

Dim Data() As Variant
ReDim Data(1 To 1 + fila2 - fila1, 1 To 4)

Saludos, Cacho.

Felipe Prado
Ingenieria comercial universidad de ch...
Escrito por Felipe Prado
el 10/02/2011

Excelente, funciono...

Aprovecho de consultarte, si ya tengo el Listbox de 4 columnas con algunas lineas de datos.

¿Como extraigo cada uno de los 4 datos o campos de la linea seleccionada, para pasarlos a otros textbox o directamente a la planilla?

Entiendo que con esta rutina identifico la linea seleccionada (partiendo de cero)

For r = 0 To ListBox1. ListCount - 1
If ListBox1. Selected(r) = True Then linea = r
Next

¿Pero para identificar los valores de esa linea?

Un abrazo..

Cacho Rodríguez
Ingeniería electrónica universidad nac...
Escrito por Cacho Rodríguez
el 11/02/2011

A) Si tu ListBox no permite "selecciones múltiples", entonces es más directo:

linea = ListBox1. ListIndex

b) Mediante las propiedades List ó Column accedes a cada valor específico:

ListBox. List(1, 3) representa el valor de la segunda fila y la cuarta columna (recuerda que se empieza a numerar desde "0")

Saludos, Cacho.

Felipe Prado
Ingenieria comercial universidad de ch...
Escrito por Felipe Prado
el 11/02/2011

Impecable, claramente es mas sencillo, porque efectivamente mi listbox no considera seleccion multiple..
Gracias Cacho..!

Cacho Rodríguez
Ingeniería electrónica universidad nac...
Escrito por Cacho Rodríguez
el 11/02/2011

Saludos y hasta la próxima.
Cacho.