【发布时间】:2021-03-28 01:56:27
【问题描述】:
我在工作表 2 上有一个宏按钮,在工作表 1 上有我的数据(数据透视表)。我想:
- 按下工作表 2 上的宏按钮
- 宏清除数据透视表并选择工作表1上的某个字段
- 复制工作表 1 上的数据透视表
- 粘贴到工作表 2 上的特定单元格
我的宏做了所有事情,但它不复制工作表 1 中的数据,它出于某种原因复制了工作表 2 中的数据。我在 With 语句中有代码,不知道为什么它从活动表(工作表 2)复制数据。
Sub muniButton()
Application.ScreenUpdating = False
' Refresh PivotTable and copy source data
With worksheet1
.PivotTables("inventoryPivot").ClearAllFilters
.PivotTables("inventoryPivot").PivotFields("Type"). _
CurrentPage = "REGIONAL"
Range("P5:Q5", Range("P5:Q5").End(xlDown)).Copy
End With
' Pasting source data
worksheet2.Range("outputCorner").Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
我没有在 Range("P5:Q5", Range("P5:Q5").End(xlDown)).Copy 前面包含 .,因为它会给出错误。这不应该从 worksheet1 复制数据,因为它在 With 语句中吗?由于某种原因,它会从 worksheet2 复制数据,因为它是活动表。
谢谢。
【问题讨论】:
-
这就是两个
.的用途 - 将Range()调用范围限定为 worksheet1。仅供参考,如果您只有一个.,那就是问题所在。 -
嗨蒂姆,我有哪两个
.?当我在Range("P5:Q5", Range("P5:Q5").End(xlDown)).Copy前面添加.时,我收到一个错误。是否应该复制 worksheet1 中的范围,因为它在 With 语句中? -
.Range("P5:Q5", .Range("P5:Q5").End(xlDown)).Copy请参阅我对您之前帖子的第一条评论。