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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
'Begin Description
'Процедура RemovePctSign удаляет символы процентов (%) из мобильной таблицы.
'End Description

'Тема:
'Удаление символов "%" из мобильных таблиц

'Описание:
'Вопрос.
'Используемая версия SPSS: 7.5 или выше.
'Как можно через скрипт удалить символы "%" из мобильной таблицы?

'Ответ.
'Ниже приводится скрипт, который вносит необходимые изменения в выделенную мобильную таблицу.
'Процедура Main приводится для примера, вы можете её модифицировать, или вовсе заменить своей, но
'процедура RemovePctSign, вероятно, вовсе не нуждается в модификации, независимо от того, будете ли
'вы использовать её в вашем собственном скрипте, или вызывать из процедуры автоскрипта.

'Скрпит является модификацией решения AnswerNet, код решения: 100007757
'Размещено в SPSSX-L 17.03.2003, автор изменений: Raynald Levesque.

'Перевод: А. Балабанов, 11.01.2009.
'Проверено: SPSS 15.0.0.
'Размещение: http://www.spsstools.ru/Scripts/PivotTables/RemovePercentSignsFromPivotTable.txt (.sbs).

Sub Main()
Dim objPivot As PivotTable 
Dim objItem As ISpssItem
Dim bolFoundOutput As Boolean
Dim bolFoundPivot As Boolean

'Мобильная таблица должна быть активирована
Call GetFirstSelectedPivot(objPivot, objItem, bolFoundOutput, bolFoundPivot)
'Запрет обновления экрана до окончания внесения исправлений
objPivot.UpdateScreen = False 

'Изменение формата (удаление %)
Call RemovePctSign(objPivot)
'### установка числа десятичных знаков не была реализована, второй параметр удален мной - А.Б.

objPivot.UpdateScreen = True
objItem.Deactivate
'Иногда таблица неправильно обновляется по высоте и ширине;
'повторная активация может это исправить.
objItem.ActivateTable 
objItem.Deactivate 
End Sub 


Sub RemovePctSign(objPivot As PivotTable)
'Устанавливает числовой формат с заданным числом десятичных знаков для всех ячеек, содержащих символ"%"
'### установка числа десятичных знаков не была реализована, второй параметр удален мной - А.Б.
Dim lngRow As Long, lngCol As Long
Dim objDataCells As ISpssDataCells 

Set objDataCells = objPivot.DataCellArray 
	With objDataCells
		For lngRow = 0 To .NumRows - 1
			For lngCol = 0 To .NumColumns - 1
			strFormat=.NumericFormatAt(lngRow,lngCol)
			If Not IsNull (.ValueAt (lngRow, lngCol)) And InStr(strFormat,"%")>0 Then
			'Debug.Print .ValueAt (lngRow, lngCol) & " " & .NumericFormatAt(lngRow,lngCol)
			.NumericFormatAt(lngRow,lngCol)= "#.#"
			End If
			Next
		Next
	End With
objPivot.Autofit
End Sub