У меня есть электронная таблица с 8 столбцами данных. (Ряд 1 содержит мои заголовки).

Я пытаюсь записать макрос, который мне не нужно редактировать впоследствии.

Я нажимаю макрос записи, выделяю свои данные, захожу на вкладку данных и выбираю сортировку. Затем я продолжаю сортировать данные в порядке убывания по значению столбца D. Я нажимаю кнопку остановки записи макроса.

Когда я играю этот макрос на одном листе, он работает хорошо. Когда я воспроизводю этот макрос на другом листе в том же файле, который идентичен оригиналу, ничего не происходит.

Как я могу записать макрос, чтобы делать то, что я хотел, без редактирования макросов в VBA?

Спасибо за вашу помощь.

Sub Macro1()
'
' Macro1 Macro
'

'
    Cells.Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("D2:D1316" _
        ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:H1316")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

1 ответ1

1

Это будет сортировать так же для вас.

По сути, вы используете две переменные для определения данных, которые вы хотите отсортировать, и ключа, по которому вы сортируете. Затем вы выполняете сортировку, используя переменные. Этот довольно простой, но он должен дать вам некоторое представление о написании собственного кода.

Например, если вы хотите отсортировать по двум ключам, вы можете использовать key2 и т.д.

Sub Joe()

'Define the variables
Dim rngData As Range
Dim rngKey As Range

'Set the variables
Set rngData = Range("A:H")
Set rngKey = Range("D1")

'Perform the Sort
rngData.Sort key1:=rngKey, order1:=xlDescending, Header:=xlYes

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .