Макропрограмма не работает непрерывно ... Запускать только один раз - PullRequest
0 голосов
/ 14 февраля 2019

Я новичок в макропрограммировании с Excel и хочу непрерывно сортировать столбец A после ввода данных.Но это не работает.Сортирует один раз и останавливается.Можете ли вы помочь мне в этом?Большое спасибо ...

Sub Macro3(ByVal Target As Range)
ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").sort.SortFields.Add _
    Key:=Range("A2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
    :=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

Sub sort()
Dim Target As Range
Set Target = Range("Table1")
Call Macro3(Target)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Call sort
End If
End Sub

1 Ответ

0 голосов
/ 14 февраля 2019

Вам необходимо отключить обработку событий перед внесением изменений в значения на рабочем листе.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
        On Error GoTo out_here
        Application.EnableEvents = False
        With ListObjects("Table1").Range
            .Sort key1:=.Cells(1), order1:=xlAscending, _
                  Header:=xlYes
        End With
    End If

out_here:
        Application.EnableEvents = True
End Sub

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...