Выделение итогов жирным шрифтом
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | 'Begin Description 'В выделенной таблице скрипт изменяет форматирование меток строки/столбца и соответствующих ячеек данных, 'в случае, если метка содержит слово "Total". В данной редакции информация выделяется синим и полужирным. 'Условия: выделена мобильная таблица. 'End Description 'ЭТОТ СКРИПТ СОЗДАН НА ОСНОВЕ ШАБЛОННОГО (STARTER) СКРИПТА 'Reformat by Labels'(REFORMLB.sbs) 'НАЗНАЧЕНИЕ 'В выделенной таблице скрипт изменяет форматирование меток строки/столбца и соответствующих ячеек данных, 'в случае, если метка содержит слово "Total". 'УСЛОВИЯ 'Мобильная таблица, в которой присутствуют метки строк/столбцов/слоёв, содержащих слово "Total", выделена в назначенном окне результатов. 'ДЕЙСТВИЯ 'Изменяет форматирование текста меток и соответствующих ячеек данных на синий с полужирным начертанием 'СОВЕТЫ 'Если вы новичок в программировании, ознакомьтесь с разделом Scripting Tips меню 'справки (Help) редактора скриптов SPSS для получения начальных сведений. 'Для получения информации об объектах автоматизации SPSS, их методах и свойствах, 'нажмите в редакторе скриптов клавишу F2 - отобразится Object Browser - навигатор по объектам. 'Для получения контекстной справки по терминам языка Sax Basic и объектам SPSS, их свойствам ' и методам, нажмите F1. 'Перевод: А. Балабанов, 11.01.2009. 'Проверено: SPSS 15.0.0. 'Размещение: http://www.spsstools.ru/Scripts/PivotTables/MakeTotalsBold.sbs (.txt). Option Explicit 'Указание на то, что все переменные должны быть явно объявлены перед использованием 'строковые константы (искомая метка) Const cTOTAL As String = "Total" 'константы, определяющие элементы, подвергаемые переформатированию Public Const LABELS_ONLY As Integer = 0 'только метки Public Const DATA_ONLY As Integer = 1 'только элементы данных Public Const LABELS_AND_DATA As Integer = 2 'метки и элементы данных 'константы, определяющие тип поиска в метках строк/столбцов (точное/частичное совпадение) Public Const EXACT_MATCH As Integer = 0 'точное Public Const PARTIAL_MATCH As Integer = 1 'частичное Public bolCellsSelected As Boolean Sub Main ' Объявление объектных переменных, используемых в процедуре Dim objItem As ISpssItem ' Объект в окне результатов Dim objPivotTable As PivotTable ' Мобильная таблица ' Объявление переменных, используемых для разных специальных нужд Dim strTargetText As String ' Текст для поиска нужных меток Dim intTargetType As Integer ' Тип ячеек (метка столбца, строки, данные) Dim intTargetFormat As Integer ' Тип применяемого форматирования Dim bolFoundOutputDoc As Boolean Dim bolPivotSelected As Boolean Dim intSearchType As Integer bolCellsSelected = False ' Укажите, что следует отформатировать: ' ********************************************************** ' Замените "Total" (в константе cTOTAL выше) на нужную метку строки/столбца/слоя. ' Следует точно указать искомую метку, как она есть в таблице, сохраняя все знаки, включая пробелы. ' Кавычки не убирайте. ' ********************************************************** strTargetText = cTOTAL 'Если требуется точное совпадение искомой метки со строкой strTargetText, уберите символ ' из следующей строки 'intSearchType = EXACT_MATCH 'Если требуется хотя бы частичное совпадение искомой метки со строкой strTargetText, уберите символ ' из следующей строки intSearchType = PARTIAL_MATCH 'Вызов процедуры GetFirstSelectedPivot для получения ссылки на первую выделенную таблицу Call GetFirstSelectedPivot(objPivotTable, objItem, bolFoundOutputDoc, bolPivotSelected) If (bolFoundOutputDoc = False) Or (bolPivotSelected = False) Then 'либо отсутствует окно результатов, либо мобильная таблица не была выделена Exit Sub End If '************************************************************************* 'Следующий раздел выделяет ячейки, подлежащие переформатированию. 'Вы можете указать элементы таблицы, подлежащие форматированию, изменив второй аргумент 'в вызове процедур SelectRowLabelsByText и SelectColLabelsByText. 'Если необходимо переформатировать только метки, измените второй аргумент на LABELS_ONLY 'Если необходимо переформатировать только ячейки данных, измените второй аргумент на DATA_ONLY 'Если надо переформатировать и метки, и данные, измените второй аргумент на LABELS_AND_DATA 'Если требуется вести поиск в метках строк, уберите символ ' в начале следующей строки Call SelectRowLabelsByText(strTargetText, LABELS_AND_DATA, intSearchType, objPivotTable) 'Если требуется вести поиск в метках столбцов, уберите символ ' в начале следующей строки Call SelectColLabelsByText(strTargetText, LABELS_AND_DATA, intSearchType, objPivotTable) '************************************************************************* If bolCellsSelected = True Then 'следующий раздел форматирует выделенные метки и/или данные With objPivotTable 'Уберите ' в следующей строке, если надо спрятать выделенные ячейки '.TextHidden = True 'Следующие 4 строки отвечают за начертание шрифта. 'Уберите ' в строке, соответствующей желаемому стилю шрифта. '.TextStyle = 0 'обычный '.TextStyle = 1 'курсив .TextStyle = 2 'полужирный '.TextStyle = 3 'полужирный курсив 'Уберите ' из следующей строки, если требуется ввести подчёркивание '.TextUnderlined = true 'Следующие 6 строк отвечают за цвет шрифта. 'Уберите ' из строки, которая соответствует желаемому цвету '.TextColor = RGB(255, 0, 0) 'Красный .TextColor = RGB(0, 0, 255) 'Синий '.TextColor = RGB(0, 255, 0) 'Зеленый '.TextColor = RGB(255, 255, 0) 'Желтый '.TextColor = RGB(0, 0, 0) 'Черный '.TextColor = RGB(255, 255, 255)'Белый 'Следующие 6 строк определяют фон выделенных ячеек. 'Уберите ' из строки, соответствующей желаемому фону '.BackgroundColor = RGB(255, 0, 0) 'Красный '.BackgroundColor = RGB(0, 0, 255) 'Синий '.BackgroundColor = RGB(0, 255, 0) 'Зеленый '.BackgroundColor = RGB(255, 255, 0) 'Желтый '.BackgroundColor = RGB(0, 0, 0) 'Черный '.BackgroundColor = RGB(255, 255, 255) 'Белый 'Следующая строка определяет размер шрифта в выделенных ячейках. 'Уберите ' для управления размером. Укажите нужный размер после знака = '.TextSize = 10 'задайте нужный размер в пунктах 'Следующие 4 строки управляют размерами отступов от текста в выделенных ячейках. 'Уберите ' для изменения отступов. Введите нужное значение после знака = '.TopMargin = 2 'Укажите верхний отступ в пунктах '.BottomMargin = 2 'Укажите нижний отступ в пунктах '.LeftMargin = 2 'Укажите левый отступ в пунктах '.RightMargin = 2 'Укажите правый отступ в пунктах 'Следующие 2 строки управляют выравниванием текста в выделенных ячейках. 'Уберите ' для изменения выравнивания. Укажите нужное значение после знака = '.HAlign = 2 '0=влево, 1=вправо, 2=по центру '.VAlign = 2 '0=вверх, 1=вниз, 2=по центру End With End If ' Деактивация мобильной таблицы и выход objItem.Deactivate End Sub Sub SelectRowLabelsByText (strText As String, intType As Integer, intCriteria As Integer, objPivotTable As PivotTable) Dim objRowLabels As ISpssLabels ' массив меток строк Dim intCol As Integer ' число столбцов в массиве меток Dim intRow As Integer ' число строк в массиве меток Dim intR As Integer ' счетчик цикла Dim intC As Integer ' счетчик цикла 'Выделение меток строк с ячейками данных или без (как указано) ' ссылка на массив меток строк Set objRowLabels = objPivotTable.RowLabelArray ' RowLabelArray - двумерный массив. Цикл по всем элементам массива в поисках метки, ' совпадающей с искомым текстом (strText) intCol = objRowLabels.NumColumns intRow = objRowLabels.NumRows For intC = 0 To intCol - 1 For intR = 0 To intRow - 1 If (objRowLabels.ValueAt(intR,intC) = strText And intCriteria = EXACT_MATCH) _ Or (InStr(objRowLabels.ValueAt(intR,intC), strText) And intCriteria = PARTIAL_MATCH)Then If intType = LABELS_ONLY Then 'выделение только меток objRowLabels.SelectLabelAt(intR, intC) bolCellsSelected = True ElseIf intType = DATA_ONLY Then 'выделение только ячеек данных objRowLabels.SelectDataUnderLabelAt(intR, intC) bolCellsSelected = True ElseIf intType = LABELS_AND_DATA Then objRowLabels.SelectLabelDataAt(intR, intC) bolCellsSelected = True End If End If Next intR Next intC End Sub Sub SelectColLabelsByText (strText As String, intType As Integer, intCriteria As Integer, objPivotTable As PivotTable) Dim objColumnLabels As ISpssLabels ' массив меток столбцов Dim intCol As Integer ' число столбцов в массиве Dim intRow As Integer ' число строк в массиве Dim intR As Integer ' счетчик цикла Dim intC As Integer ' счетчик цикла 'Выделение меток столбцов и (или) соответствующих ячеек данных (как запрошено) Set objColumnLabels = objPivotTable.ColumnLabelArray ' ColumnLabelArray - двумерный массив. Делаем цикл по его элементам в поисках метки, ' совпадающей с искомым текстом в переменной strText. intCol = objColumnLabels.NumColumns intRow = objColumnLabels.NumRows For intC = 0 To intCol - 1 For intR = 0 To intRow - 1 If (objColumnLabels.ValueAt(intR,intC) = strText And intCriteria = EXACT_MATCH) _ Or (InStr(objColumnLabels.ValueAt(intR,intC), strText) And intCriteria = PARTIAL_MATCH)Then If intType = LABELS_ONLY Then 'выделение только меток objColumnLabels.SelectLabelAt(intR, intC) bolCellsSelected = True ElseIf intType = DATA_ONLY Then 'выделение только ячеек данных objColumnLabels.SelectDataUnderLabelAt(intR, intC) bolCellsSelected = True ElseIf intType = LABELS_AND_DATA Then objColumnLabels.SelectLabelDataAt(intR, intC) bolCellsSelected = True End If End If Next intR Next intC End Sub |
Related pages
...