Мне нужно создать макрос в Excel 2007, который будет сортироваться. Я не знаю, сколько строк будет. Я знаю один способ найти количество строк и как записывать сортировку, но не как использовать эти биты кода вместе.Excel VBA с использованием Range в Macro
Sub Sort()
'
' Sort Macro
' *find the last row (assuming no more than 100000 rows)*
Dim Row As Range
Set Row = Range("A100000").End(xlUp).Select
' *code written by recording my sort*
Range("A1:G1").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B6376" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("D2:D6376" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("F2:F6376" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:G6376")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Я пытался поставить «Row» в нескольких местах, но я получаю ошибку времени выполнения «424» Требуется объект. Мне нужна эта переменная, чтобы заменить номер строки (6376), но не уверен, как это сделать.
я могу видеть, где эти линии
Range("A1:G1").Select
Range(Selection, Selection.End(xlDown)).Select
выбирает содержание книги, которая является то, что я хочу, я просто не знаю, как сделать это динамически.
EDIT: Я хочу отсортировать и переделать. Это записанный макрос. Мне нужно изменить 6376 на динамику в зависимости от количества строк.
Sub Macro4()
'
' Macro4 Macro
'
'
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B6376" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("D2:D6376" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("F2:F6376" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:G6376")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(7), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True
Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(7), _
Replace:=False, PageBreaks:=False, SummaryBelowData:=True
Selection.Subtotal GroupBy:=4, Function:=xlSum, TotalList:=Array(7), _
Replace:=False, PageBreaks:=False, SummaryBelowData:=True
End Sub
Спасибо.
[Интересный Read] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros/10718179#10718179) –
Благодаря @SiddharthRout. Это полезная ссылка, но я все еще не понимаю, как использовать тусклый ряд с неизвестными строками. Например, Set rng = Range («A1: B10»). Если я не знаю, что столбцы заканчиваются на «B», а строки заканчиваются на «10», как подключить их к тусклому? – jabs
[THIS] (http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba) поставил вас в правильном направлении :) –