2016-05-03 6 views
3

Ich suche nach Hilfe, um mein Makro ranentauglicher zu machen. Excel ist 2010 Version.Suchen Sie nach besser definierten Bereich in 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 

Frage: (: G1374 und A1: J1374 G2) auf etwas basiert auf Säulen und verwendeten Zellen Wie aus vordefinierten Bereich ändern?

+0

würden Sie so etwas wie ActiveWorkbook.Worksheets verwenden ("Address"). Spalten (1) und ActiveWorkbook.Worksheets ("Address"). Spalten (6), müssen Sie, um die Größe der Reihe 2 zu erhalten . –

Antwort

1

Es gibt bessere Möglichkeiten, einen Range.Sort method zu codieren. Die Verwendung des Range.CurrentRegion property ist ideal zum Referenzieren eines Datenblocks, der von A1 ausgestrahlt wird.

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

Sie können diese so etwas wie verwenden

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

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

end with 

wenn nicht wana mit zu verwenden, müssen Sie Blatt aller Zeiten angeben z.B.

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

Bemerkung: Zeile und Spalte können Zahlen, Buchstaben etc ...

Verwandte Themen