1
我只学习了三个星期的时间来学习如何使用Excel,并且让我的工作表上的所有表格都会排序,但不会在发生更改时进行排序当我实际访问工作表时。自动对表格中的多个表格进行排序
因此,如果我从其他来源输入数据,如UserForm
,它将不会再次排序表,直到我回到工作表。有没有办法自动排序它们,因此不需要额外的访问?
这是我到目前为止有:
Private Sub Worksheet_Activate()
Dim tbl As ListObject
Dim SortCol As Long
Application.ScreenUpdating = False
For Each tbl In ActiveSheet.ListObjects
If tbl.Name = "TableSORT2" Then
SortCol = 2
Else
SortCol = 1
End If
With tbl.Sort
.SortFields.Clear
.SortFields.Add Key:=tbl.DataBodyRange.Columns(SortCol), _
SortOn:=xlSortOnValues, Order:=xlAscending
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next tbl
Application.ScreenUpdating = True
End Sub
我试图改变Private Sub Worksheet_Activate()
到Private Sub Worksheet_Change()
但无济于事,我假设,因为有更多的参考或整合需要。
你有没有尝试过ActiveSheet.EnableCalculation = True,或者你在想更像或Pivot.RefreshTable? – jamesC 2015-02-11 21:22:55
你可以直接将这种排序写入宏,然后每当你从用户表单添加数据时调用宏?你做的每件事都包含在一个工作簿中吗? – 2015-02-11 21:31:42
我不确定这些是什么意思,但第一个看起来像它需要活动的工作表来更新,而不仅仅是一个自动化的响应。我发现这一点,它只更新表单中的一行,但它没有任何额外的交互:Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target,Range(“ A:A“))是Nothing Then Range(”A8“)。Sort Key1:= Range(”A9“),_ Order1:= xlAscending,Header:= xlYes, OrderCustom:= 1,MatchCase:= False , Orientation:= xlTopToBottom End If End Sub' – Tayloryouno 2015-02-11 21:33:10