2008-12-22 45 views

Respuesta

3

No estoy seguro de lo que quiere decir. ¿Quieres pasar de abajo hacia arriba, en vez de arriba hacia abajo?

Esto debería hacer:

Dim myrange As Range 
Set myrange = Range("B3:E10") 

Dim row As Integer, col As Integer 
For row = myrange.Rows.Count To 1 Step -1 
    For col = myrange.Columns.Count To 1 Step -1 
     Debug.Print myrange(row, col).Value 
    Next col 
Next row 
+0

Buena solución BradC. +1 – LeppyR64

1

Si se trabaja con rangos de más de unas pocas células y no es necesario modificar las células, siempre tenga en cuenta tirando de los valores en una matriz y trabajar con esa : la interacción entre el código y la hoja de trabajo es relativamente (muy) costosa. Si está trabajando desde un ensamblado .NET, eso va doble (tal vez triple, tal vez más) porque hay varios pasos más involucrados en un viaje de ida y vuelta.

En VBA, algo como esto:

Dim vals As Variant 
Dim row As Long, col As Long 

vals = Range("A1:Z100") ' or whatever 
For col = UBound(vals,2) To LBound(vals,2) Step -1 
    For row = UBound(vals) To LBound(vals) Step -1 
     DoSomethingInterestingWith vals(row, col) 
    Next 
Next 
Cuestiones relacionadas