У меня есть сводная таблица, и я хочу создать макрос, который позволяет пользователю вводить требуемые числовые форматы для списка сводных полей. Затем макрос будет читать этот диапазон числовых форматов PivotField и изменять существующий числовой формат на введенный пользователем числовой формат для каждого поля сводной таблицы, для которого пользователь указал числовой формат.
Приведенный ниже код создает новую рабочую таблицув котором перечислены все сводные поля и каждый существующий числовой формат. У него есть третий пустой столбец, называемый NewFormat, где пользователь может ввести требуемый числовой формат.
Public Sub CreatePivotFormatterTab()
Set pt = Sheets("Workings").PivotTables(1)
Set newSheet = Sheets.Add
newSheet.Name = "PivotFormatter"
newSheet.Cells(1, 1).Value = "Header"
newSheet.Cells(1, 2) = "Format"
newSheet.Cells(1, 3) = "NewFormat"
i = 1
For Each pf In pt.PivotFields
On Error Resume Next
i = i + 1
newSheet.Cells(i, 1).Value = pf.Name
newSheet.Cells(i, 2).Value = pf.NumberFormat
Next
End Sub
После того, как пользователь вводит конкретные числовые форматы, которые он хочет изменить, как мне получить сводную таблицу для чтенияво входных данных пользователя и соответственно измените NumberFormat (и если пользовательский ввод не предоставлен, по умолчанию используется существующий NumberFormat)?
Я думал о создании массива на вкладке PivotFormatter:
Public Sub CreatePivotFormatArray()
'Create Range
Set Headers = Range("A1:C1")
Set PFR = _
Range(Headers.Offset(1), Headers.Offset(1).End(xlDown))
'Read the Range into an Array
PFA = PFR.Value
End Sub
Но я не знаю, как изменить числовые форматы для каждого поля сводки на введенный пользователем числовой формат.