我是用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发布于 2019-02-14 13:08:43
在对工作表上的值进行更改之前,需要禁用事件处理。
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这就是执行任务所需的全部内容。如果您想将排序代码分成三个部分,只要您保留禁用事件处理,这应该是一件简单的事情。
https://stackoverflow.com/questions/54683260
复制相似问题