У меня есть код vba, который проверяет все сводные таблицы в указанных рабочих листах, чтобы добавить диапазон сводных полей в раздел значений / данных сводной диаграммы, поскольку заголовки сводных данных меняются каждые 4 недели.
У меня есть 6 точек, где этот код работает отлично, но 2 точки, где я получаю сообщение об ошибке.Я пытался настроить код, но не удалось.Я использовал этот код, чтобы найти тип для этого поля сводной таблицы, поскольку я думал, что это должны быть данные, но он оказывается 'скрытым' :
Set pvtTable = Worksheets("Sheet1").Range("A3").PivotTable
Set pvtField = pvtTable.PivotFields("ORDER_DATE")
Select Case pvtField.Orientation
Case xlHidden
MsgBox "Hidden field"
Case xlRowField
MsgBox "Row field"
Case xlColumnField
MsgBox "Column field"
Case xlPageField
MsgBox "Page field"
Case xlDataField
MsgBox "Data field"
End Select
Затем я проверил этот кодна сопоставимых полях в центрах, где он работает отлично, ожидая, что это будут поля данных, но опять же это были скрытые поля.Поэтому я не понимаю, что отличается в этих двух сводных элементах, из-за которых мой код не работает по сравнению с сводными точками, в которых код работает идеально.
Это код для сводок, где он не работает:
Sub AddAllFieldsValues_blad1()
Dim pt As PivotTable
Dim iCol As Long
Dim iColEnd As Long
Dim sheetnames As Variant
Dim I As Variant
With Sheets("blad1")
For Each pt In Sheets("blad1").PivotTables
With pt
.ManualUpdate = True
.DataPivotField.Orientation = xlHidden
iCol = 11
With .PivotFields(iCol)
If .Orientation = 0 Then
.Orientation = xlDataField
End If
End With
.ManualUpdate = False
pt.PivotCache.refresh
End With
Next pt
End With
End Sub
Мне нужно, чтобы сводник имел 1 поле сводок в разделе значений.
КогдаЯ выполняю этот код, я получаю эту ошибку:
ошибка 1004: невозможно задать ориентацию правильного поля сводного поля класса
И эта строка отмечается, когда я нажимаю'решить ошибку' (или как она называется по-английски):
.DataPivotField.Orientation = xlHidden
Я не понимаю, почему, потому что она отлично работает для других стержней на листе.Единственное, что отличается, это то, что для этих опорных точек код немного отличается:
Sub AddAllFieldsValues()
Dim pt As pivottable
Dim iCol As Long
Dim iColEnd As Long
Dim sheetnames As Variant
Dim I As Variant
sheetnames = Array("data pivots euros", "data pivots category - euros", "data pivots units", "data pivots category - units")
For I = LBound(sheetnames) To UBound(sheetnames)
With Sheets(sheetnames(I))
For Each pt In Sheets(sheetnames(I)).PivotTables
With pt
.ManualUpdate = True
.DataPivotField.Orientation = xlHidden
iCol = 12
iColEnd = .PivotFields.Count - 4
For iCol = 12 To iColEnd
With .PivotFields(iCol)
If .Orientation = 0 Then
.Orientation = xlDataField
End If
End With
Next iCol
.ManualUpdate = False
pt.PivotCache.refresh
End With
Next pt
End With
Next I
End Sub