【发布时间】:2015-08-17 17:22:45
【问题描述】:
我正在尝试编写一个宏来遍历活动工作簿中的每个工作表,并将所有公式保存为值。为此,对于每个工作表,首先我遍历每个数据透视表,然后选择该表并复制并粘贴为值。然后我尝试使用worksheet.activerange.value = .value 方法来保存工作表中的其余单元格。
我在 wks.UsedRange.Value = wks.UsedRange.Value 行收到 1004 运行时错误。
我有两个问题:
1) 如何修复我的运行时错误?
2) 有没有办法让 .value = .value 与数据透视表一起使用?在以前的宏中,这从未与枢轴一起使用,因此我必须使用复制和粘贴,如下所示。
非常感谢您的帮助!
Sub LockWorkbook()
Dim pvt As PivotTable
Dim wks As Worksheet
Dim i As Integer
Dim n As Integer
n = 1
For Each wks In ActiveWorkbook.Worksheets
i = 1
For Each pvt In wks.PivotTables
wks.PivotTables(i).TableRange2.Select
With Selection
.Copy
.PasteSpecial xlValues
.PasteSpecial xlFormats
End With
i = i + 1
Next pvt
Set wks = ActiveWorkbook.Worksheets(n)
wks.UsedRange.Value = wks.UsedRange.Value
n = n + 1
Next wks
End Sub
【问题讨论】:
-
是否应该使用range.formula = usedrange.value。对不起,我可能错了。
-
另外,数据透视表不能包含公式。它们只能包含值,因此您不需要这样的宏。
-
Wouldnt cells.copy cells.pastespecial xlValues 适用于包括枢轴在内的整个工作表