2008-12-22 12 views

Répondre

3

Vous ne savez pas exactement ce que vous voulez dire. Vous voulez passer de bas en haut, plutôt que de haut en bas?

Cela devrait faire:

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

Bonne solution BradC. +1 – LeppyR64

1

Si vous travaillez avec des gammes de plus de quelques cellules et ne pas besoin de modifier les cellules, pensez toujours tirer les valeurs dans un tableau et travailler avec cette : l'interaction entre code et feuille de calcul est relativement (très) coûteuse. Si vous travaillez à partir d'un assemblage .NET, cela va double (peut-être triple, peut-être plus), car il y a plusieurs autres étapes impliquées dans un aller-retour.

Dans VBA, quelque chose comme ceci:

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