<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[如何解决VBA Event中不能调用另一个Worksheet中命名范围的情况]]></title><description><![CDATA[<p dir="auto">最近遇到了一个问题，同样的代码放到普通的宏Procedure里面可以跑，但是在Worksheet Event中会报错的情况。<br />
代码是这样，一个简单的高级筛选</p>
<pre><code>Sub filterAdv()
Sheet2.Cells.ClearContents
Range("start").CurrentRegion.AdvancedFilter xlFilterCopy, Range("cri_1").CurrentRegion, Range("output")

End Sub
</code></pre>
<p dir="auto">其中start，cri_1和output都是命名的范围，而且Scope都是Workbook<br />
<img src="/assets/uploads/files/1642920007387-8c74e1ff-644f-4912-a406-193ba109b0f8-image.png" alt="8c74e1ff-644f-4912-a406-193ba109b0f8-image.png" class="img-responsive img-markdown" /><br />
这段代码在普通宏中跑没有问题，但是一旦放到Worksheet Event里面就有如下Bug<br />
<img src="/assets/uploads/files/1642920084432-37f8dbdb-c74c-4287-9d62-0a076e6ac727-image.png" alt="37f8dbdb-c74c-4287-9d62-0a076e6ac727-image.png" class="img-responsive img-markdown" /><br />
原因是因为Output, Cri_1不在这个代码对应的工作表下，所以不能调用这两个范围。</p>
<p dir="auto">解决方法也很简单，只要把代码仍然写到普通的宏模块下并在Worksheet Change事件中直接调用写好的模块就可以顺畅运行啦。</p>
<pre><code>Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
 ' Filter and copy data

Call filterAdv

Application.EnableEvents = True
End Sub

</code></pre>
]]></description><link>https://actuarygarden.com/topic/176/如何解决vba-event中不能调用另一个worksheet中命名范围的情况</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 21:42:18 GMT</lastBuildDate><atom:link href="https://actuarygarden.com/topic/176.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Jan 2022 06:43:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 如何解决VBA Event中不能调用另一个Worksheet中命名范围的情况 on Sun, 23 Jan 2022 06:43:40 GMT]]></title><description><![CDATA[<p dir="auto">最近遇到了一个问题，同样的代码放到普通的宏Procedure里面可以跑，但是在Worksheet Event中会报错的情况。<br />
代码是这样，一个简单的高级筛选</p>
<pre><code>Sub filterAdv()
Sheet2.Cells.ClearContents
Range("start").CurrentRegion.AdvancedFilter xlFilterCopy, Range("cri_1").CurrentRegion, Range("output")

End Sub
</code></pre>
<p dir="auto">其中start，cri_1和output都是命名的范围，而且Scope都是Workbook<br />
<img src="/assets/uploads/files/1642920007387-8c74e1ff-644f-4912-a406-193ba109b0f8-image.png" alt="8c74e1ff-644f-4912-a406-193ba109b0f8-image.png" class="img-responsive img-markdown" /><br />
这段代码在普通宏中跑没有问题，但是一旦放到Worksheet Event里面就有如下Bug<br />
<img src="/assets/uploads/files/1642920084432-37f8dbdb-c74c-4287-9d62-0a076e6ac727-image.png" alt="37f8dbdb-c74c-4287-9d62-0a076e6ac727-image.png" class="img-responsive img-markdown" /><br />
原因是因为Output, Cri_1不在这个代码对应的工作表下，所以不能调用这两个范围。</p>
<p dir="auto">解决方法也很简单，只要把代码仍然写到普通的宏模块下并在Worksheet Change事件中直接调用写好的模块就可以顺畅运行啦。</p>
<pre><code>Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
 ' Filter and copy data

Call filterAdv

Application.EnableEvents = True
End Sub

</code></pre>
]]></description><link>https://actuarygarden.com/post/373</link><guid isPermaLink="true">https://actuarygarden.com/post/373</guid><dc:creator><![CDATA[Mengkelyu]]></dc:creator><pubDate>Sun, 23 Jan 2022 06:43:40 GMT</pubDate></item></channel></rss>