Object_Worksheet 的方法范围我只能使第一部分或第二部分工作

Method Range of Object_Worksheet i can only make the first or 2nd part work

对不起我的英语。

我的代码有问题,我从不同的 sheet 获取信息到一个 sheet。使用切片器,我只能获得必要的信息。一切都很好,直到我需要在复制数据之前对数据进行排序。人们使用 sheets 并过滤并对列表做各种事情。当我写这篇文章的时候,我在想也许我可以把它分成两部分,因为它之前工作得很好,所以为什么不只是一个过滤代码。我仍然想知道我的代码中的解决方案,因为我只是不明白为什么它不起作用。问题是(现在)在“复制粘贴”之后的代码的第二部分。

所有命名引用都经过检查并正确无误(它在过滤器部分之前工作正常)但不知何故在过滤器部分它做了一些事情所以复制粘贴的代码将无法工作。

Option Explicit

Sub GetDataForSlicersSel()
Dim wsAF As Worksheet
Dim wsEM As Worksheet
Dim wsEI As Worksheet
Dim wsOP As Worksheet
Dim wsPG As Worksheet
Dim wsRK As Worksheet
Dim wsKM As Worksheet
Dim wsBK As Worksheet
Dim wsVE As Worksheet
Dim wsRE As Worksheet
Dim wsCP As Worksheet

Set wsAF = Sheets("afblijven")
Set wsEM = Sheets("1721 Energiemeters")
Set wsEI = Sheets("2704 E-installatie OA")
Set wsOP = Sheets("output")
Set wsPG = Sheets("Projectgegevens")
Set wsRK = Sheets("2601 Regelkast-OVK")
Set wsKM = Sheets("2611 Klein Materiaal")
Set wsBK = Sheets("2614 Bekabeling OA")
Set wsVE = Sheets("2621 Veldapparatuur")
Set wsRE = Sheets("2634 Regelinstallatie OA")
Set wsCP = Sheets("1711 Circulatiepompen")

Application.ScreenUpdating = False

'filter
wsEM.Select
wsEM.Sort.SortFields.Clear
Range("EMtabel").Sort key1:=Range("a2"), Header:=xlYes
ActiveSheet.Sort.SortFields.Clear
wsOP.Select

'copy paste
wsEM.Range("EMtabel[#All]").AdvancedFilter _
 Action:=xlFilterCopy, _
 CriteriaRange:=wsAF.Range("Critslicers"), _
 CopyToRange:=wsOP.Range("ExtractSlicersEM"), _
 Unique:=False

Application.ScreenUpdating = True


End Sub

因为我犯了一个愚蠢的错误而解决了。此代码不适用于 VBA 中的 F5 或 F8,但适用于按钮。多亏了建议,我还稍微重写了代码。现在的代码(我仍然有暗淡和设置部分,但对于 post 的长度,我排除了这个):

    'filter
With wsEI.Sort
.SortFields.Add Key:=Range("a2"), Order:=xlAscending
.SetRange Range("E_installaties")
.Header = xlYes
.Apply
End With

'copy paste
With wsEI
.Range("E_installaties[#All]").AdvancedFilter _
  Action:=xlFilterCopy, _
  CriteriaRange:=wsAF.Range("Critslicers"), _
  CopyToRange:=wsOP.Range("ExtractSlicersEI"), _
  Unique:=False
End With

感谢大家的帮助!