Hide a column in pivot table
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 | 'SPSS AnswerNet: Result 'Solution ID: 100006374 'Product: SPSS Base 'Version: 8.0 'Title: 'Hiding a column such As "Frequency" In PivotTable Output 'Description: 'Q. 'I am using SPSS 8.0 For Windows And I don't want the column labelled "Frequency" 'To be In my frequency tables. Is there a script which will hide this 'column? 'A. 'The subroutine HideColumnLabelColumn will search For a Text String (such As "Frequency") 'In column labels. When it finds the requested label, it shrinks the width of the column 'To one point, which causes the column To become hidden. 'To Call HideColumn from an autoscript routine: 'The subroutine HideColumn will search For a Text String (such As paste the subroutine 'HideColumn into your Autoscript.sbs file (at the End Is fine), Right-click On the table, Choose 'Create/Edit Autoscript, And To the subroutine which the cursor Is placed In, add 'Dim objPivot As PivotTable 'Set objPivot = objTable 'HideColumn objPivot, "Frequency" 'Check the Edit->Options Dialog's Script tab, to be sure that the 'routine Is enabled: there should be a check In the CheckBox In front of 'the routine's name. 'Here Is how the modified autoscript routine might look: _______________________________________________________ Sub Frequencies_Table_Frequencies_Create(objTable As Object, _ objOutputDoc As Object, lngIndex As Long) 'Autoscript 'Trigger Event: Frequencies Table Creation after running Frequencies procedure. 'Effects: Goes through the Row Labels and finds "Total" rows 'and turns "Total" and associated data cells bold Dim bolSelection As Boolean Call SelectRowLabelsAndData(objTable, cTOTAL, bolSelection) If bolSelection = True Then objTable.TextStyle = 2 'make text bold End If '--- this part was added to hide columns labelled "Frequency" --- Dim objPivot As PivotTable Set objPivot = objTable HideColumn objPivot, "Frequency" End Sub '_______________________________________________________ 'The following Is a simple demonstration of how To Call HideColumn from 'another routine. It can be applied To every PivotTable In the Output; 'see the SPSS Script eXchange at 'http://www.spss.com/software/spss/base/Win75/SCPTXCHG.html 'For further examples. Save the Text below To a script named '"HideColumn.SBS" Select a pivot table, And Then run the script. _______________________________________________________ '********** Demo of HideColumn ********** '--- save everything below to a file "HideColumn.SBS" ' select a pivot table and run the script 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 HideColumn objPivot, "Frequency" objItem.Deactivate End Sub '********** To use in an Autoscript ********** '--- paste everything below into Autoscript.sbs --- 'HideColumn searches for the requested label, and hides the 'column in which it is found. Call HideColumn from another 'routine. Sub HideColumn (objPivot As PivotTable, strLabel As String) Dim objColLabels As ISpssLabels Dim i As Integer, j As Integer Set objColLabels = objPivot.ColumnLabelArray With objColLabels For i = .NumRows - 1 To 0 Step -1 For j = 0 To .NumColumns - 1 If Not IsNull(.ValueAt(i,j)) Then If .ValueAt(i,j) = strLabel Then objPivot.UpdateScreen = False 'make a column width less than 15 to hide .ColumnLabelWidthAt(i,j) = 1 objPivot.UpdateScreen = True 'Exit Sub End If End If Next Next End With End Sub |