variable una seleccionar rango para matriz matrices macro ejemplo dinamico desde crear con como celdas celda asignar array activa arrays excel vba excel-vba

arrays - una - seleccionar rango variable vba



Uso de VBA para asignar rango de valores de celda a una matriz de variables (2)

Soy muy nuevo en VBA, para tener paciencia conmigo aquí.

Quiero asignar un conjunto de variables al valor de un conjunto de rangos, es decir. ejecuta un código breve para simplificar lo siguiente

Dim Sample 1 as string Sample1 = activeworksheet.range("C17").value Dim Sample 2 as string Sample2 = activeworksheet.range("C18").value}

y así

Siguiendo un tutorial de excelfunctions.net, sé que puedo acortar la declaración a

Dim Sample(1 to 20) as a string

Pero el tutorial lo deja allí (porque es un tutorial sobre nombres), lo que sugiere que lo complete de la siguiente manera

sample(1)=activesheet.range("C7").value sample(2)=activesheet.range("C7").value

y así

Descubrí que la discusión a continuación está en el camino correcto para responder a mi búsqueda, pero estoy teniendo problemas para aplicarla a mi situación. ( Rangos de matriz VBA de Excel para un bucle )

Como una nota de seguimiento, en última instancia, estoy tratando de asignar valores a estas variables para su uso en los siguientes procedimientos, en lugar de declararlos y asignarlos cada vez.

¡Gracias!


Debieras :

  • Defina el rango que desea recuperar datos
  • Para cada celda del rango, recupera tus datos

    dim tab() As string, cell as range, i as integer i = 0 redim tab(0) for each cell in ActiveWorksheet.Range("C1:C20") tab(i) = cell i = i + 1 redim preserve tab(i) next

editar: doblo el código para mostrarlo correctamente


Pruebe algo como esto:

Sub test() Dim sampleArr(1 To 20) As String Dim i As Integer Dim rng As Range, cel As Range i = 1 Set rng = Range("C1:C20") For Each cel In rng sampleArr(i) = cel.Value i = i + 1 Next cel For i = LBound(sampleArr) To UBound(sampleArr) Debug.Print sampleArr(i) Next i

Además, si conoce el rango que desea colocar en una matriz, simplemente puede establecer una matriz en ese rango:

Sub test() Dim sampleArr() As Variant Dim i As Integer Dim rng As Range, cel As Range i = 1 Set rng = Range("C1:C20") '' Note, this creates a 2 Dimensional array sampleArr = rng '' Right here, this sets the values in the range to this array. For i = LBound(sampleArr) To UBound(sampleArr) Debug.Print sampleArr(i, 1) '' you need the ",1" since this is 2D. Next i End Sub