2017-08-10 80 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).Sort ...' –

+0

你是男人!謝謝 – johankent30

回答

0

確定A1是否爲空白。如果不是空白,請使用A1,如果是空白,請使用[Ctrl] + [向下]。

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