我正在尝试查看是否可以以编程方式捕获自动筛选排序事件,获取排序条件,然后将相同的排序条件应用于第二个工作表中的自动筛选。
到目前为止,我似乎必须触发 Worksheet_Calculate() 事件。这我已经做到了。然后我必须检查自动筛选排序标准是否已更改。如果不是,则退出 sub。如果是,则收集条件并通过单独的子程序运行它,该子程序对单独工作表中的自动筛选器执行完全相同的排序。
一般的想法是,每当这两个自动筛选器之一被排序时,另一个工作表中的自动筛选器应该以完全相同的方式排序。
我尝试过做这样的事情(我必须添加一个Excel公式才能真正触发计算事件):
Private Sub Worksheet_Calculate()
Dim wbBook as Workbook
Dim wsSheet as Worksheet
Dim rnData as Range
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Sheet1")
With wsSheet
Set dnData = .UsedRange
End With
End Sub
但我似乎无法收集标准,我尝试了几件事并添加了一个手表dnData 甚至不显示任何 AutoFilter 属性。有人可以阐明这一点吗?
I'm trying to see if I can programatically trap an AutoFilter sort event, get the sort criteria and then apply that same sort criteria to an AutoFilter in a second worksheet.
So far it seems as though I have to trigger the Worksheet_Calculate() event. And this I've done. Then I have to check if the AutoFilter sort criteria was changed. If it wasn't, exit sub. If it was, collect the criteria and run it through a separate sub, which does the exact same sorting on an AutoFilter in a separate worksheet.
The general idea is that whenever one of these two AutoFilters are sorted, the AutoFilter in the other sheet should be sorted the exact same way.
I've tried to do something like this (I had to add an Excel formula to actually make the calculate event trigger):
Private Sub Worksheet_Calculate()
Dim wbBook as Workbook
Dim wsSheet as Worksheet
Dim rnData as Range
Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets("Sheet1")
With wsSheet
Set dnData = .UsedRange
End With
End Sub
But I can't seem to manage to collect the criteria, I've tried several things and adding a watch to the dnData doesn't even reveal any AutoFilter property. Can someone shed any light on this?
发布评论
评论(3)
以下是获取
autofilter
标准的方法:改编自 ozgrid< /a>
Here is a way to get the
autofilter
criteria:Adapted from ozgrid
以下是我认为您的要求的一些注释。
Here are some notes on what I see as your requirements.
找到这段代码:
在我的测试中运行良好!我更改了其中的一小部分以支持复杂的标准:
原始链接:http://www.vbaexpress.com/forum/archive/index.php/t-7564.html
Found this code:
Works fine on my tests! I've changed a small part of it to support complex criteria:
Original link: http://www.vbaexpress.com/forum/archive/index.php/t-7564.html