'#Language "WWB-COM"
'Begin Description
'Подсветка значимых уровней в таблицах t-проверки для независимых выборок (Independent Samples Test).
'Все ячейки со значениями уровня значимости <= cSigVal будут выделены зелёным цветом.
'Условия: мобильная таблица, к которой применяется скрипт, должна быть выделена.
'Если потребуется, в строке, следующей за символами ######### ниже, можно указать желаемый порог значимости.
'End Description
'Автор: rlevesque@videotron.ca, 29.05.2001
'Посетите мою страницу, посвящённую SPSS: http://www.spsstools.net
'Размещение: http://www.spsstools.ru/Scripts/PivotTables/HighlightSignificantT-TestCells.txt (.sbs).
'Перевод: А. Балабанов, 02.01.2009.
'Проверено: SPSS 24.0.
' ВНИМАНИЕ, ВНИМАНИЕ, ВНИМАНИЕ!!!
' В SPSS 16.0 или более поздней проверьте комментарий #Uses, который расположен ниже. Важно, чтобы он содержал
' корректный путь для того, чтобы работали глобальные процедуры вроде GetFirstSelectedPivot!
'#Uses "C:\Program Files\IBM\SPSS\Statistics\23\Samples\Global.wwd"
Option Explicit
'##################
Const cSigVal=.005
'##################	
Const TextTotalStr ="2-tailed"
Const cGREEN = RGB(60, 179, 113)
Const cWHITE = RGB(255,255,255)
Sub Main
	Dim strSigVal As String
		Dim objItem As ISpssItem          		' Объект окна результатов.
		Dim objPivotTable As PivotTable         ' Мобильная таблица.
		Dim bolFoundOutputDoc As Boolean
		Dim bolPivotSelected As Boolean
		Dim s_bolCellsSelected As Boolean
		
		'Вызов процедуры GetFirstSelectedPivot для установки ссылки на выделенную мобильную таблицу
		Call GetFirstSelectedPivot(objPivotTable, objItem, bolFoundOutputDoc, bolPivotSelected)
		If (bolFoundOutputDoc = False) Or (bolPivotSelected = False) Then
			'либо отсутствует окно результатов, либо таблица не выделена
			Exit Sub
		End If
	
		'переменная для отслеживания, были ли выделены ячейки в результате поиска
		s_bolCellsSelected = False	
		Dim objDataCells As ISpssDataCells
		Dim lngNumRows As Long
		Dim lngNumColumns As Long
		Set objDataCells = objPivotTable.DataCellArray
		' Цикл по ячейкам. Закрашиваются ячейки, значения в которых меньше или равны cSigVal:
		Dim objRowLabels As ISpssLabels         ' Массив меток строк
		Set objRowLabels = objPivotTable.RowLabelArray
		Dim objColLabels As ISpssLabels         ' Массив меток столбцов
		Set objColLabels = objPivotTable.ColumnLabelArray
		lngNumRows = objDataCells.NumRows
		lngNumColumns = objDataCells.NumColumns
		Dim I As Integer, J As Integer
		'objItem.Deactivate  ###удалено - А.Б.
		For I = 0 To lngNumRows -1
			Dim dummy As Integer
				For J = 0 To lngNumColumns -1
					If InStr (objColLabels.ValueAt(objColLabels.NumRows-1,J), TextTotalStr)> 0 Then
						If Len(objDataCells.ValueAt (I,J)) > 0 Then
							If objDataCells.ValueAt (I,J) <= cSigVal Then
								objDataCells.BackgroundColorAt (I,J) = cGREEN
							Else
								objDataCells.BackgroundColorAt  (I,J) = cWHITE
							End If
						Else
							objDataCells.BackgroundColorAt  (I,J) = cWHITE
						End If							
					End If
				Next
		Next
		' деактивация мобильной таблицы и выход
		'objItem.Activate  ###удалено - А.Б.
		objItem.Deactivate  
End Sub