在工作表A更改Excel VBA时,对工作表B中的数据进行sorting

我在excel的一个工作簿中有三张纸。 我有工作表A,我从另一个程序粘贴原始数据,工作表B从工作表A中获取数据并对前三列进行sorting,工作表C使用sorting后的数据进行计算。

当我在表A中粘贴数据时,我想要做的就是触发表B中的sorting,如果一切正常,那么您将永远不必看B表。

我对Excel VBA并不是非常有经验,但是这是我从一些研究中得到的结果:

Private Sub Worksheet_Calculate() Application.EnableEvents = False Range("A1:C314").Sort _ Key1:=Range("A2"), Order1:=xlDescending, _ Key2:=Range("B2"), Order2:=xlDescending, _ Key3:=Range("C2"), Order3:=xlDescending, _ Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom Application.EnableEvents = True End Sub 

我在VBA窗口的“工作表B”中的“Microsoft Excel对象”中有这个。 我遇到的问题是当我在任何表单上进行更改时发生的macros触发器,而不仅仅是表单A.我试图完成的工作是当我在表单A中粘贴数据时,表单B中的更改将触发macros。

在SheetA中使用Worksheet_Change事件而不是全局Worksheet_Calculate。

监视粘贴数据时将受到影响的单元格或单元格区域,例如,监视列A的更改并仅在列A中的单元格发生更改时运行其余代码:

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then ' run code to copy the data from SheetA to SheetB ' run code to sort SheetB End If End Sub