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