【发布时间】:2020-01-14 13:56:14
【问题描述】:
简单来说,我编写了一段 VBA 代码,用于在两个工作簿之间复制和粘贴数据。但是,我希望能够复制特定数据而不是整个表。所以工作簿“x”我想通过选择工作簿“y”中的下拉框来过滤列“L” - 字段“P14”。
我将如何做到这一点,以便无论用户选择什么,它都会过滤并将该数据粘贴到工作簿 y 中。
到目前为止我所做的代码如下:
Private Sub CommandButton1_Click()
Dim x As Workbook
Dim y As Workbook
Dim p As String
Set p = y.Worksheets("Title").Cells(14, "P").Value
Set x = Workbooks.Open("C:\Users\name\Desktop\Project
Autonetics\CoreData")
'x.Worksheets("Xero").Range("L1").AutoFilter Field:=1, Criteria:="p"
With Xero
.AutoFilterMode = False
With .Range("L:L")
.AutoFilter Field:=1, Criteria:="p"
.SpecialCells (xlCellTypeVisible)
End With
End With
Set y = ThisWorkbook
x.Worksheets("Xero").Range("A1:L100000").Copy
Application.DisplayAlerts = False
y.Worksheets("Costings").Range("A1").PasteSpecial
x.Close
End Sub
【问题讨论】:
-
你看过
Range.AutoFilter吗?甚至可能更快的Range.AdvancedFilter=) -
@JvdV 我确实有,但我不知道如何使用自动过滤功能,但这就是我想使用的方式。我将如何使用自动过滤器进行编程
-
录制宏可能会有所帮助。这里也有关于如何使用
AutoFilter的示例。 -
@BigBen 您好 BigBen,不太清楚如何使用自动过滤功能 - 我可以使用宏,但您是否有链接到 SO 上的自动过滤示例
-
您应该将来自 WB Y 的值存储在一个变量(字符串或其他)中,并将此变量用作 Range.AutoFilter 中的输入条件