gpt4 book ai didi

excel - 将过滤字段从一张表复制到另一张表而不激活

转载 作者:行者123 更新时间:2023-12-04 21:28:14 25 4
gpt4 key购买 nike

我有一个有两张纸的工作簿。
首先叫做“Forma”
第二个叫做“价格”
我去 Forma,使用一些 VBA 形状,我选择了一个产品类别。我在表格价格的 A1 单元格中标记此类别名称,然后根据此类别过滤产品,然后再次将过滤后的产品复制到 Forma 中。
由于激活和停用工作表,该程序正在运行,但在激活之间闪烁屏幕。有更好的办法吗?
这是我的代码的一部分:

With ActiveSheet
range("j7: m30").ClearContents
End With

'Tag the category in Prices Table
ThisWorkbook.Sheets("Prices").Cells(1, 1).Value = "CategoryName.ex.Computers"

'Filtering and selecting products comparing A1 with Column 3 Categories
Worksheets("Prices").Activate

range("A1:K300").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=range("a1").Value

'Copy filtered in Forma Sheet
Dim DbExtract, DuplicateRecords As Worksheet
Set DbExtract = ThisWorkbook.Sheets("Prices")
Set DuplicateRecords = ThisWorkbook.Sheets("Forma")

DbExtract.range("D3:f5000").SpecialCells(xlCellTypeVisible).Copy
DuplicateRecords.Cells(7, 10).PasteSpecial

最佳答案

复制过滤范围

  • 不是 activating而不是 selecting会提高性能。
  • 关闭Application.ScreenUpdating将停止屏幕“闪烁”。
  • 使用变量将增加可读性。
  • 像下面的代码这样的东西可以让你走上正轨。

  • 代码
    Option Explicit

    Sub copyCategory()

    Const Criteria As String = "CategoryName.ex.Computers"

    Dim wb As Workbook
    Set wb = ThisWorkbook

    Dim src As Worksheet
    Set src = wb.Worksheets("Prices")

    Application.ScreenUpdating = False

    If src.AutoFilterMode Then
    src.AutoFilterMode = False
    End If

    src.Range("A1").Value = Criteria
    src.Range("A1:K300").AutoFilter Field:=3, _
    Criteria1:=Criteria

    Dim dst As Worksheet
    Set dst = wb.Worksheets("Forma")

    dst.Range("J7: M30").ClearContents

    src.Range("D3:F300").SpecialCells(xlCellTypeVisible).Copy dst.Range("J7")
    ' If you need some special pasting then rather use the following 3 lines.
    'src.Range("D3:F300").SpecialCells(xlCellTypeVisible).Copy
    'dst.Range("J7").PasteSpecial
    'Application.CutCopyMode = False

    Application.ScreenUpdating = True

    MsgBox "Data copied.", vbInformation, "Success"

    End Sub

    关于excel - 将过滤字段从一张表复制到另一张表而不激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64820921/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com