编译错误-更新数据透视时需要数组



我正在尝试将数据透视表自动化,因为它使用列的最低值作为数据透视的过滤器。

单元格H6中的值将更新数据透视的过滤器,但我需要这个值是动态的,并更改为W列中的最低值。然而,代码不适用于单元格中的公式,因为它没有将其视为值。

Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
On Error Resume Next
If Intersect(Target, Range("H6:H7")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("cumulative sales pivot").PivotTables("PivotTable2")
Set xPFile = xPTable.PivotFields("Issue Day Of Sale ID")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Range("H6").Select
Range("H6").PasteSpecial xlPasteFormulas("=MIN(W:W)")
Range("H6").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

第一部分代码有效,但第二部分给了我

"编译错误-预期数组">

有什么想法吗?

键入注释作为答案。请注意,BigBen的评论将解决这个问题,因此在这里也可以捕捉到:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Range("H6").Value = Application.Min(Range("W:W"))
End Sub

现在到您的编译错误:

Range("H6").PasteSpecial xlPasteFormulas("=MIN(W:W)")处发生的编译错误是由于语法原因造成的。

在Range的文档中。粘贴特殊情况下,您会注意到这些参数用于粘贴操作。

在编写时,附加到xlPasteFormulas上的("=MIN(W:W)")会标记错误,编译器认为()适用于数组。这就是你收到错误的原因。


现在,关于Range.PasteSpecial的适当使用。。。Range.PasteSpecial (Paste, Operation, SkipBlanks, Transpose)有4个可能的自变量。我将把关于什么可以填充每个参数的进一步解释留给文档,但将举一个常见的Paste参数的例子:

'Pastes the value from the copied cell
Cells(1,1).Copy
Cells(2,2).PasteSpecial xlPasteValues
'Pastes the formula from the copied cell
Cells(1,1).Copy
Cells(2,2).PasteSpecial xlPasteFormulas

请注意,在上面的内容中,两者都要求公式或值来自复制的单元格。

如果要将公式附加到单元格,可以使用Range.Formula,例如:

Cells(1,1).Formula = "=Min(B:B)"

希望两者都能解释问题并解决您的问题。

最新更新