2017-08-10 8 views
0

開始点と終了点をハードコーディングせずにセルの範囲をソートしようとしています。私の範囲は常に列Aから始まり、列Mまで広がりますが、停止して開始する行は変わります。変数を設定し、最後の行のRange関数に組み込む方法を考えましたが、範囲を開始する行に対してどのように行うのかわかりません。ここに私のコードは、これまでのところです:VBAでハードコーディングなしの範囲をソート

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

私は把握することはできません何行6で私の範囲を開始した場合にのみ、この作品空白でない最初の行で私の範囲を開始するためにExcelを伝えるためにどのようにされました列Aの

ありがとう!

+0

'Range(" A6:M ")'部分を更新する必要がありましたか? 'Range(" A "&startRow&":M "&lastRow)のようなもの。ソート...' –

+0

あなたは男です!ありがとう – johankent30

答えて

0

A1が空白かどうかを判断します。空白でない場合はA1を使用し、空白の場合は[ctrl] + [down]を使用します。

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