2016-05-03 50 views
3

尋求幫助,使我的宏更適合範圍。 Excel是2010版本。在Excel 2010上尋找更好的定義範圍?

ActiveWorkbook.Worksheets("AddressList").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("AddressList").Sort.SortFields.Add Key:=Range(_ 
     "G2:G1374"), SortOn:=xlSortOnValues, Order:=xlAscending,  
DataOption:= _ 
    xlSortTextAsNumbers 
With ActiveWorkbook.Worksheets("AddressList").Sort 
    .SetRange Range("A1:J1374") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

問題:(:G1374和A1:G2 J1374)如何從預定的範圍更改爲基於列和使用電池的東西嗎?

+0

你會使用類似ActiveWorkbook.Worksheets( 「AddressList中」)。列(1)和ActiveWorkbook.Worksheets( 「AddressList中」)。列(6),你需要調整,以獲得第2行。 –

回答

1

有更好的方法來編寫一個Range.Sort method。使用Range.CurrentRegion property非常適合引用從A1輻射出的數據塊。

with worksheets("AddressList") 
    with .cells(1, 1).currentregion 
     .Cells.Sort Key1:=.Columns(7), Order1:=xlAscending, _ 
        Orientation:=xlTopToBottom, Header:=xlYes 
    end with  
end with 
0

如果不瓦納與使用您可以使用類似這樣

Dim mySheet as worksheet 
Set mySheet = Sheets("somePrettySheetName") 

with mySheet 
    .range(.cells(row,column),.cells(row,Column)).someStuffToDo 

end with 

,則需要例如指定表中的所有時間

mySheet.range(mySheet.cells(row,column),mySheet.cells(row,column)) 

備註:行和列可以是數字,字母等...