如何解决VBA Event中不能调用另一个Worksheet中命名范围的情况
-
最近遇到了一个问题,同样的代码放到普通的宏Procedure里面可以跑,但是在Worksheet Event中会报错的情况。
代码是这样,一个简单的高级筛选Sub filterAdv() Sheet2.Cells.ClearContents Range("start").CurrentRegion.AdvancedFilter xlFilterCopy, Range("cri_1").CurrentRegion, Range("output") End Sub
其中start,cri_1和output都是命名的范围,而且Scope都是Workbook
这段代码在普通宏中跑没有问题,但是一旦放到Worksheet Event里面就有如下Bug
原因是因为Output, Cri_1不在这个代码对应的工作表下,所以不能调用这两个范围。解决方法也很简单,只要把代码仍然写到普通的宏模块下并在Worksheet Change事件中直接调用写好的模块就可以顺畅运行啦。
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False ' Filter and copy data Call filterAdv Application.EnableEvents = True End Sub