在Excel 2010上寻找更好的定义范围?

时间:2016-05-03 13:47:57

标签: excel vba excel-vba

寻求帮助,使我的宏更加环保。 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

问题:如何从预定义范围(G2:G1374和A1:J1374)更改为基于列和已使用单元格的内容?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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))

备注:行和列可以是数字,字母等......