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