2017-08-10 2 views
0

J'essaie de trier une plage de cellules sans coder en dur les points de départ et d'arrêt. Ma plage commencera toujours dans la colonne A et s'étendra jusqu'à la colonne M, mais les lignes qu'elle arrête et commence à varier. J'ai trouvé comment définir une variable et l'incorporer dans la fonction Range pour la dernière rangée, mais je ne peux pas comprendre comment faire cela pour la rangée sur laquelle la plage devrait commencer. Voici mon code à ce jour:VBA trier une plage sans codage en dur

Range("A6:M" & lastRow).Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlNo 

Cela ne fonctionne que si je commence ma gamme sur la ligne 6. Ce que je ne peux pas comprendre est comment dire Excel pour commencer ma gamme sur la première ligne qui n'est pas vide dans la colonne A.

Merci!

+0

Avez-vous eu besoin de mettre à jour la partie 'Range (" A6: M ")'? Quelque chose comme 'Range (" A "& startRow &": M "& lastRow) .Sort ...' –

+0

Vous l'homme! Merci – johankent30

Répondre

0

Déterminez si A1 est vide. Utilisez A1 s'il n'est pas vide et [ctrl] + [bas] s'il est vide.

dim startRow as long, lastRow as long 
With worksheets("sheet1") 
    lastRow = .cells(.rows.count, "M").end(xlup).row 
    if isempty(.cells(1, "A") then 
     startrow = .cells(1, "A").end(xldown).row 
    else 
     startRow = 1 
    end if 
    with .range(.cells(startrow, "A"), .cells(lastrow, "M")) 
     .cells.Sort Key1:=.cells(1), Order1:=xlAscending, Header:=xlNo 
    end with 
end with