1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Sub Main
  Dim objPivot As PivotTable
  Dim objItem As ISpssItem
  'Сводная таблица должна быть активирована
  Dim bolFoundOutput As Boolean, bolFoundPivot As Boolean

  GetFirstSelectedPivot objPivot, objItem, bolFoundOutput, bolFoundPivot
  If Not (bolFoundOutput And bolFoundPivot) Then
  	Exit Sub
  End If
  Call UndoPercent(objPivot,"#.#")
  objItem.Deactivate
End Sub

Sub UndoPercent(objPivotTable As Object, strNewFormat As String)
'Цель: Заменить процентный формат в ячейках таблиц.
'Условия: Сводная таблица, которую необходимо изменить, должна быть активирована,
'а параметр strNewFormat должен содержать строку допустимого формата.
'Результат: Форматы ячеек в таблице меняются с процентов на strNewFormat
'Входящие: Объект PivotTable (уже активированный),
'новый числовой формат (strNewFormat)

'Си. раздел справки по SPSS Objects
' "String Description of Numeric Formats" (строчные описания числовых форматов)
'или поэскспериментируйте с GetFormatString.
'Размещено: John Bauer в SPSSX-L 23 января 2001 г.

  Dim strFormat As String
  Dim lngRow As Long, lngCol As Long
  Dim objDataCells As ISpssDataCells

  Set objDataCells = objPivotTable.DataCellArray

  With objDataCells
    For lngRow = 0 To .NumRows - 1
      For lngCol = 0 To .NumColumns - 1
        If Not IsNull (.ValueAt (lngRow, lngCol)) Then
          strFormat = .NumericFormatAt (lngRow, lngCol)
          If strFormat = "##.#%" Then
            .NumericFormatAt (lngRow, lngCol) = strNewFormat
            'конвертируем проценты в доли (делим на  100):
            'если не нужно, закомментируйте эту строку
            .ValueAt(lngRow, lngCol) = CStr$(.ValueAt(lngRow, lngCol)/100)
          End If
        End If
      Next
    Next
    End With
  objPivotTable.Autofit

End Sub