From 3ddf7f2d429d91537e5bb8a94572bdf9802a830e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Thu, 8 Sep 2016 16:23:24 +0800 Subject: [PATCH] Renamed the modules for extension publishing. Changed to use dialogs instead of code-created dialogs for localized UI. --- _1CorRel.vb => 1CorRel.vb | 138 +++-------------------------- _2PTTest.vb => 2PTTest.vb | 138 +++-------------------------- _3ITTest.vb => 3ITTest.vb | 123 +++----------------------- _4ANOVA.vb => 4ANOVA.vb | 123 +++----------------------- _5Chi2GoF.vb => 5Chi2GoF.vb | 138 +++-------------------------- _0Main.vb => 9Tools.vb | 167 ++++++++++++------------------------ 6 files changed, 117 insertions(+), 710 deletions(-) rename _1CorRel.vb => 1CorRel.vb (67%) rename _2PTTest.vb => 2PTTest.vb (83%) rename _3ITTest.vb => 3ITTest.vb (88%) rename _4ANOVA.vb => 4ANOVA.vb (90%) rename _5Chi2GoF.vb => 5Chi2GoF.vb (87%) rename _0Main.vb => 9Tools.vb (57%) diff --git a/_1CorRel.vb b/1CorRel.vb similarity index 67% rename from _1CorRel.vb rename to 1CorRel.vb index a630cac..df7ddb4 100644 --- a/_1CorRel.vb +++ b/1CorRel.vb @@ -1,4 +1,4 @@ -' _1CorRel: The macros to for generating the report of the Pearson’s correlation coefficient +' 1CorRel: The macros to for generating the report of the Pearson’s correlation coefficient ' by imacat , 2016-08-10 Option Explicit @@ -6,151 +6,39 @@ Option Explicit ' subRunCorrelation: Runs the Pearson’s correlation coefficient. Sub subRunCorrelation As Object Dim oRange As Object - Dim mLabels () As String, nI As Integer, mSelected (0) As Integer - Dim oDialogModel As Object, oDialog As Object, nResult As Integer - Dim oTextModel As Object, oListModel1 As Object, oListModel2 As Object - Dim oButtonModel As Object - Dim nColumn As Integer, oRange1 As Object, oRange2 As Object - Dim oSheets As Object, sSheetName As String, sExisted As String - Dim oSheet As Object + Dim oSheets As Object, sSheetName As String + Dim oSheet As Object, mRanges As Object + Dim sExisted As String, nResult As Integer ' Asks the user for the data range oRange = fnAskDataRange (ThisComponent) If IsNull (oRange) Then Exit Sub End If - ReDim mLabels (oRange.getColumns.getCount - 1) As String - For nI = 0 To oRange.getColumns.getCount - 1 - mLabels (nI) = oRange.getCellByPosition (nI, 0).getString - Next nI - ' Creates a dialog - oDialogModel = CreateUnoService ( _ - "com.sun.star.awt.UnoControlDialogModel") - oDialogModel.setPropertyValue ("PositionX", 200) - oDialogModel.setPropertyValue ("PositionY", 200) - oDialogModel.setPropertyValue ("Height", 80) - oDialogModel.setPropertyValue ("Width", 95) - oDialogModel.setPropertyValue ("Title", "Step 2/2: Specify the data") - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 5) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "First score column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptGroup", oTextModel) - - ' Adds the drop down list - oListModel1 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel1.setPropertyValue ("PositionX", 5) - oListModel1.setPropertyValue ("PositionY", 15) - oListModel1.setPropertyValue ("Height", 10) - oListModel1.setPropertyValue ("Width", 85) - oListModel1.setPropertyValue ("Dropdown", True) - oListModel1.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 0 - oListModel1.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstGroup", oListModel1) - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 30) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "Second score column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptScore", oTextModel) - - ' Adds the drop down list - oListModel2 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel2.setPropertyValue ("PositionX", 5) - oListModel2.setPropertyValue ("PositionY", 40) - oListModel2.setPropertyValue ("Height", 10) - oListModel2.setPropertyValue ("Width", 85) - oListModel2.setPropertyValue ("Dropdown", True) - oListModel2.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 1 - oListModel2.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstScore", oListModel2) - - ' Adds the buttons. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 5) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.CANCEL) - oDialogModel.insertByName ("btnClose", oButtonModel) - - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 50) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.OK) - oButtonModel.setPropertyValue ("DefaultButton", True) - oDialogModel.insertByName ("btnOK", oButtonModel) - - ' Adds the dialog model to the control and runs it. - oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog") - oDialog.setModel (oDialogModel) - oDialog.setVisible (True) - nResult = oDialog.execute - oDialog.dispose - - ' Cancelled - If nResult = 0 Then + ' Specifies the data + mRanges = fnSpecifyData (oRange, _ + "&3.Dlg2SpecData.txtPrompt1.Label1CorRel", _ + "&6.Dlg2SpecData.txtPrompt2.Label1CorRel") + If IsNull (mRanges) Then Exit Sub End If - nColumn = oListModel1.getPropertyValue ("SelectedItems") (0) - oRange1 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - nColumn = oListModel2.getPropertyValue ("SelectedItems") (0) - oRange2 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - ' Checks the existing report oSheets = ThisComponent.getSheets - sSheetName = oRange1.getSpreadsheet.getName - sExisted = "" + sSheetName = oRange.getSpreadsheet.getName If oSheets.hasByName (sSheetName & "_correl") Then - sExisted = sExisted & ", """ & sSheetName & "_correl""" - End If - If sExisted <> "" Then - sExisted = Right (sExisted, Len (sExisted) - 2) - If InStr (sExisted, ",") > 0 Then - sExisted = "Spreadsheets " & sExisted & " exist. Overwrite?" - Else - sExisted = "Spreadsheet " & sExisted & " exists. Overwrite?" - End If + sExisted = "Spreadsheet """ & sSheetName & "_correl"" exists. Overwrite?" nResult = MsgBox(sExisted, MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION) If nResult = IDNO Then Exit Sub End If - ' Drops the existing report - If oSheets.hasByName (sSheetName & "_correl") Then - oSheets.removeByname (sSheetName & "_correl") - End If + oSheets.removeByname (sSheetName & "_correl") End If ' Reports the paired T-test. - subReportCorrelation (ThisComponent, oRange1, oRange2) + subReportCorrelation (ThisComponent, mRanges (0), mRanges (1)) ' Makes the report sheet active. oSheet = oSheets.getByName (sSheetName & "_correl") diff --git a/_2PTTest.vb b/2PTTest.vb similarity index 83% rename from _2PTTest.vb rename to 2PTTest.vb index 5219f24..8e4148a 100644 --- a/_2PTTest.vb +++ b/2PTTest.vb @@ -1,4 +1,4 @@ -' _2PTTest: The macros to for generating the report of paired T-Test +' 2PTTest: The macros to for generating the report of paired T-Test ' by imacat , 2016-08-11 Option Explicit @@ -6,151 +6,39 @@ Option Explicit ' subRunPairedTTest: Runs the paired T-test. Sub subRunPairedTTest As Object Dim oRange As Object - Dim mLabels () As String, nI As Integer, mSelected (0) As Integer - Dim oDialogModel As Object, oDialog As Object, nResult As Integer - Dim oTextModel As Object, oListModel1 As Object, oListModel2 As Object - Dim oButtonModel As Object - Dim nColumn As Integer, oRange1 As Object, oRange2 As Object - Dim oSheets As Object, sSheetName As String, sExisted As String - Dim oSheet As Object + Dim oSheets As Object, sSheetName As String + Dim oSheet As Object, mRanges As Object + Dim sExisted As String, nResult As Integer ' Asks the user for the data range oRange = fnAskDataRange (ThisComponent) If IsNull (oRange) Then Exit Sub End If - ReDim mLabels (oRange.getColumns.getCount - 1) As String - For nI = 0 To oRange.getColumns.getCount - 1 - mLabels (nI) = oRange.getCellByPosition (nI, 0).getString - Next nI - ' Creates a dialog - oDialogModel = CreateUnoService ( _ - "com.sun.star.awt.UnoControlDialogModel") - oDialogModel.setPropertyValue ("PositionX", 200) - oDialogModel.setPropertyValue ("PositionY", 200) - oDialogModel.setPropertyValue ("Height", 80) - oDialogModel.setPropertyValue ("Width", 95) - oDialogModel.setPropertyValue ("Title", "Step 2/2: Specify the data") - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 5) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "First score column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptGroup", oTextModel) - - ' Adds the drop down list - oListModel1 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel1.setPropertyValue ("PositionX", 5) - oListModel1.setPropertyValue ("PositionY", 15) - oListModel1.setPropertyValue ("Height", 10) - oListModel1.setPropertyValue ("Width", 85) - oListModel1.setPropertyValue ("Dropdown", True) - oListModel1.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 0 - oListModel1.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstGroup", oListModel1) - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 30) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "Second score column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptScore", oTextModel) - - ' Adds the drop down list - oListModel2 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel2.setPropertyValue ("PositionX", 5) - oListModel2.setPropertyValue ("PositionY", 40) - oListModel2.setPropertyValue ("Height", 10) - oListModel2.setPropertyValue ("Width", 85) - oListModel2.setPropertyValue ("Dropdown", True) - oListModel2.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 1 - oListModel2.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstScore", oListModel2) - - ' Adds the buttons. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 5) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.CANCEL) - oDialogModel.insertByName ("btnClose", oButtonModel) - - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 50) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.OK) - oButtonModel.setPropertyValue ("DefaultButton", True) - oDialogModel.insertByName ("btnOK", oButtonModel) - - ' Adds the dialog model to the control and runs it. - oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog") - oDialog.setModel (oDialogModel) - oDialog.setVisible (True) - nResult = oDialog.execute - oDialog.dispose - - ' Cancelled - If nResult = 0 Then + ' Specifies the data + mRanges = fnSpecifyData (oRange, _ + "&3.Dlg2SpecData.txtPrompt1.Label1CorRel", _ + "&6.Dlg2SpecData.txtPrompt2.Label1CorRel") + If IsNull (mRanges) Then Exit Sub End If - nColumn = oListModel1.getPropertyValue ("SelectedItems") (0) - oRange1 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - nColumn = oListModel2.getPropertyValue ("SelectedItems") (0) - oRange2 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - ' Checks the existing report oSheets = ThisComponent.getSheets - sSheetName = oRange1.getSpreadsheet.getName - sExisted = "" + sSheetName = oRange.getSpreadsheet.getName If oSheets.hasByName (sSheetName & "_ttest") Then - sExisted = sExisted & ", """ & sSheetName & "_ttest""" - End If - If sExisted <> "" Then - sExisted = Right (sExisted, Len (sExisted) - 2) - If InStr (sExisted, ",") > 0 Then - sExisted = "Spreadsheets " & sExisted & " exist. Overwrite?" - Else - sExisted = "Spreadsheet " & sExisted & " exists. Overwrite?" - End If + sExisted = "Spreadsheet """ & sSheetName & "_ttest"" exists. Overwrite?" nResult = MsgBox(sExisted, MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION) If nResult = IDNO Then Exit Sub End If - ' Drops the existing report - If oSheets.hasByName (sSheetName & "_ttest") Then - oSheets.removeByname (sSheetName & "_ttest") - End If + oSheets.removeByname (sSheetName & "_ttest") End If ' Reports the paired T-test. - subReportPairedTTest (ThisComponent, oRange1, oRange2) + subReportPairedTTest (ThisComponent, mRanges (0), mRanges (1)) ' Makes the report sheet active. oSheet = oSheets.getByName (sSheetName & "_ttest") diff --git a/_3ITTest.vb b/3ITTest.vb similarity index 88% rename from _3ITTest.vb rename to 3ITTest.vb index ab8c6af..0f2c7b5 100644 --- a/_3ITTest.vb +++ b/3ITTest.vb @@ -1,4 +1,4 @@ -' _3ITTest: The macros to for generating the report of independent T-Test +' 3ITTest: The macros to for generating the report of independent T-Test ' by imacat , 2016-08-24 Option Explicit @@ -6,127 +6,27 @@ Option Explicit ' subRunIndependentTTest: Runs the independent T-test. Sub subRunIndependentTTest As Object Dim oRange As Object - Dim mLabels () As String, nI As Integer, mSelected (0) As Integer - Dim oDialogModel As Object, oDialog As Object, nResult As Integer - Dim oTextModel As Object, oListModel1 As Object, oListModel2 As Object - Dim oButtonModel As Object - Dim nColumn As Integer, oRange1 As Object, oRange2 As Object - Dim oSheets As Object, sSheetName As String, sExisted As String - Dim oSheet As Object + Dim oSheets As Object, sSheetName As String + Dim oSheet As Object, mRanges As Object + Dim sExisted As String, nResult As Integer ' Asks the user for the data range oRange = fnAskDataRange (ThisComponent) If IsNull (oRange) Then Exit Sub End If - ReDim mLabels (oRange.getColumns.getCount - 1) As String - For nI = 0 To oRange.getColumns.getCount - 1 - mLabels (nI) = oRange.getCellByPosition (nI, 0).getString - Next nI - ' Creates a dialog - oDialogModel = CreateUnoService ( _ - "com.sun.star.awt.UnoControlDialogModel") - oDialogModel.setPropertyValue ("PositionX", 200) - oDialogModel.setPropertyValue ("PositionY", 200) - oDialogModel.setPropertyValue ("Height", 80) - oDialogModel.setPropertyValue ("Width", 95) - oDialogModel.setPropertyValue ("Title", "Step 2/2: Specify the data") - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 5) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "Group column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptGroup", oTextModel) - - ' Adds the drop down list - oListModel1 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel1.setPropertyValue ("PositionX", 5) - oListModel1.setPropertyValue ("PositionY", 15) - oListModel1.setPropertyValue ("Height", 10) - oListModel1.setPropertyValue ("Width", 85) - oListModel1.setPropertyValue ("Dropdown", True) - oListModel1.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 0 - oListModel1.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstGroup", oListModel1) - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 30) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "Score column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptScore", oTextModel) - - ' Adds the drop down list - oListModel2 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel2.setPropertyValue ("PositionX", 5) - oListModel2.setPropertyValue ("PositionY", 40) - oListModel2.setPropertyValue ("Height", 10) - oListModel2.setPropertyValue ("Width", 85) - oListModel2.setPropertyValue ("Dropdown", True) - oListModel2.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 1 - oListModel2.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstScore", oListModel2) - - ' Adds the buttons. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 5) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.CANCEL) - oDialogModel.insertByName ("btnClose", oButtonModel) - - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 50) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.OK) - oButtonModel.setPropertyValue ("DefaultButton", True) - oDialogModel.insertByName ("btnOK", oButtonModel) - - ' Adds the dialog model to the control and runs it. - oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog") - oDialog.setModel (oDialogModel) - oDialog.setVisible (True) - nResult = oDialog.execute - oDialog.dispose - - ' Cancelled - If nResult = 0 Then + ' Specifies the data + mRanges = fnSpecifyData (oRange, _ + "&10.Dlg2SpecData.txtPrompt1.Label3ITTest", _ + "&11.Dlg2SpecData.txtPrompt2.Label3ITTest") + If IsNull (mRanges) Then Exit Sub End If - nColumn = oListModel1.getPropertyValue ("SelectedItems") (0) - oRange1 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - nColumn = oListModel2.getPropertyValue ("SelectedItems") (0) - oRange2 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - ' Checks the existing report oSheets = ThisComponent.getSheets - sSheetName = oRange1.getSpreadsheet.getName + sSheetName = oRange.getSpreadsheet.getName sExisted = "" If oSheets.hasByName (sSheetName & "_ttest") Then sExisted = sExisted & ", """ & sSheetName & "_ttest""" @@ -145,7 +45,6 @@ Sub subRunIndependentTTest As Object If nResult = IDNO Then Exit Sub End If - ' Drops the existing report If oSheets.hasByName (sSheetName & "_ttest") Then oSheets.removeByname (sSheetName & "_ttest") @@ -156,7 +55,7 @@ Sub subRunIndependentTTest As Object End If ' Reports the independent T-test. - subReportIndependentTTest (ThisComponent, oRange1, oRange2) + subReportIndependentTTest (ThisComponent, mRanges (0), mRanges (1)) ' Makes the report sheet active. oSheet = oSheets.getByName (sSheetName & "_ttest") diff --git a/_4ANOVA.vb b/4ANOVA.vb similarity index 90% rename from _4ANOVA.vb rename to 4ANOVA.vb index a3bd82b..fab644e 100644 --- a/_4ANOVA.vb +++ b/4ANOVA.vb @@ -1,4 +1,4 @@ -' _4ANOVA: The macros to for generating the report of ANOVA (Analyze of Variances) +' 4ANOVA: The macros to for generating the report of ANOVA (Analyze of Variances) ' by imacat , 2016-08-31 Option Explicit @@ -6,127 +6,27 @@ Option Explicit ' subRunANOVA: Runs the ANOVA (Analyze of Variances). Sub subRunANOVA As Object Dim oRange As Object - Dim mLabels () As String, nI As Integer, mSelected (0) As Integer - Dim oDialogModel As Object, oDialog As Object, nResult As Integer - Dim oTextModel As Object, oListModel1 As Object, oListModel2 As Object - Dim oButtonModel As Object - Dim nColumn As Integer, oRange1 As Object, oRange2 As Object - Dim oSheets As Object, sSheetName As String, sExisted As String - Dim oSheet As Object + Dim oSheets As Object, sSheetName As String + Dim oSheet As Object, mRanges As Object + Dim sExisted As String, nResult As Integer ' Asks the user for the data range oRange = fnAskDataRange (ThisComponent) If IsNull (oRange) Then Exit Sub End If - ReDim mLabels (oRange.getColumns.getCount - 1) As String - For nI = 0 To oRange.getColumns.getCount - 1 - mLabels (nI) = oRange.getCellByPosition (nI, 0).getString - Next nI - ' Creates a dialog - oDialogModel = CreateUnoService ( _ - "com.sun.star.awt.UnoControlDialogModel") - oDialogModel.setPropertyValue ("PositionX", 200) - oDialogModel.setPropertyValue ("PositionY", 200) - oDialogModel.setPropertyValue ("Height", 80) - oDialogModel.setPropertyValue ("Width", 95) - oDialogModel.setPropertyValue ("Title", "Step 2/2: Specify the data") - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 5) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "Group column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptGroup", oTextModel) - - ' Adds the drop down list - oListModel1 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel1.setPropertyValue ("PositionX", 5) - oListModel1.setPropertyValue ("PositionY", 15) - oListModel1.setPropertyValue ("Height", 10) - oListModel1.setPropertyValue ("Width", 85) - oListModel1.setPropertyValue ("Dropdown", True) - oListModel1.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 0 - oListModel1.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstGroup", oListModel1) - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 30) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "Score column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptScore", oTextModel) - - ' Adds the drop down list - oListModel2 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel2.setPropertyValue ("PositionX", 5) - oListModel2.setPropertyValue ("PositionY", 40) - oListModel2.setPropertyValue ("Height", 10) - oListModel2.setPropertyValue ("Width", 85) - oListModel2.setPropertyValue ("Dropdown", True) - oListModel2.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 1 - oListModel2.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstScore", oListModel2) - - ' Adds the buttons. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 5) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.CANCEL) - oDialogModel.insertByName ("btnClose", oButtonModel) - - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 50) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.OK) - oButtonModel.setPropertyValue ("DefaultButton", True) - oDialogModel.insertByName ("btnOK", oButtonModel) - - ' Adds the dialog model to the control and runs it. - oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog") - oDialog.setModel (oDialogModel) - oDialog.setVisible (True) - nResult = oDialog.execute - oDialog.dispose - - ' Cancelled - If nResult = 0 Then + ' Specifies the data + mRanges = fnSpecifyData (oRange, _ + "&10.Dlg2SpecData.txtPrompt1.Label3ITTest", _ + "&11.Dlg2SpecData.txtPrompt2.Label3ITTest") + If IsNull (mRanges) Then Exit Sub End If - nColumn = oListModel1.getPropertyValue ("SelectedItems") (0) - oRange1 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - nColumn = oListModel2.getPropertyValue ("SelectedItems") (0) - oRange2 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - ' Checks the existing report oSheets = ThisComponent.getSheets - sSheetName = oRange1.getSpreadsheet.getName + sSheetName = oRange.getSpreadsheet.getName sExisted = "" If oSheets.hasByName (sSheetName & "_anova") Then sExisted = sExisted & ", """ & sSheetName & "_anova""" @@ -145,7 +45,6 @@ Sub subRunANOVA As Object If nResult = IDNO Then Exit Sub End If - ' Drops the existing report If oSheets.hasByName (sSheetName & "_anova") Then oSheets.removeByname (sSheetName & "_anova") @@ -156,7 +55,7 @@ Sub subRunANOVA As Object End If ' Reports the ANOVA (Analyze of Variances) - subReportANOVA (ThisComponent, oRange1, oRange2) + subReportANOVA (ThisComponent, mRanges (0), mRanges (1)) ' Makes the report sheet active. oSheet = oSheets.getByName (sSheetName & "_anova") diff --git a/_5Chi2GoF.vb b/5Chi2GoF.vb similarity index 87% rename from _5Chi2GoF.vb rename to 5Chi2GoF.vb index b36d011..4f6f2b7 100644 --- a/_5Chi2GoF.vb +++ b/5Chi2GoF.vb @@ -1,4 +1,4 @@ -' _5Chi2GoF: The macros to for generating the report of Chi-square goodness of fit +' 5Chi2GoF: The macros to for generating the report of Chi-square goodness of fit ' by imacat , 2016-09-05 Option Explicit @@ -6,151 +6,39 @@ Option Explicit ' subRunChi2GoodnessOfFit: Runs the chi-square goodness of fit. Sub subRunChi2GoodnessOfFit As Object Dim oRange As Object - Dim mLabels () As String, nI As Integer, mSelected (0) As Integer - Dim oDialogModel As Object, oDialog As Object, nResult As Integer - Dim oTextModel As Object, oListModel1 As Object, oListModel2 As Object - Dim oButtonModel As Object - Dim nColumn As Integer, oRange1 As Object, oRange2 As Object - Dim oSheets As Object, sSheetName As String, sExisted As String - Dim oSheet As Object + Dim oSheets As Object, sSheetName As String + Dim oSheet As Object, mRanges As Object + Dim sExisted As String, nResult As Integer ' Asks the user for the data range oRange = fnAskDataRange (ThisComponent) If IsNull (oRange) Then Exit Sub End If - ReDim mLabels (oRange.getColumns.getCount - 1) As String - For nI = 0 To oRange.getColumns.getCount - 1 - mLabels (nI) = oRange.getCellByPosition (nI, 0).getString - Next nI - ' Creates a dialog - oDialogModel = CreateUnoService ( _ - "com.sun.star.awt.UnoControlDialogModel") - oDialogModel.setPropertyValue ("PositionX", 200) - oDialogModel.setPropertyValue ("PositionY", 200) - oDialogModel.setPropertyValue ("Height", 80) - oDialogModel.setPropertyValue ("Width", 95) - oDialogModel.setPropertyValue ("Title", "Step 2/2: Specify the data") - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 5) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "Group (column) column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptGroup", oTextModel) - - ' Adds the drop down list - oListModel1 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel1.setPropertyValue ("PositionX", 5) - oListModel1.setPropertyValue ("PositionY", 15) - oListModel1.setPropertyValue ("Height", 10) - oListModel1.setPropertyValue ("Width", 85) - oListModel1.setPropertyValue ("Dropdown", True) - oListModel1.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 0 - oListModel1.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstGroup", oListModel1) - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 30) - oTextModel.setPropertyValue ("Height", 10) - oTextModel.setPropertyValue ("Width", 85) - oTextModel.setPropertyValue ("Label", "Event (row) column:") - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPromptScore", oTextModel) - - ' Adds the drop down list - oListModel2 = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel2.setPropertyValue ("PositionX", 5) - oListModel2.setPropertyValue ("PositionY", 40) - oListModel2.setPropertyValue ("Height", 10) - oListModel2.setPropertyValue ("Width", 85) - oListModel2.setPropertyValue ("Dropdown", True) - oListModel2.setPropertyValue ("StringItemList", mLabels) - mSelected (0) = 1 - oListModel2.setPropertyValue ("SelectedItems", mSelected) - oDialogModel.insertByName ("lstScore", oListModel2) - - ' Adds the buttons. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 5) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.CANCEL) - oDialogModel.insertByName ("btnClose", oButtonModel) - - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 50) - oButtonModel.setPropertyValue ("PositionY", 60) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.OK) - oButtonModel.setPropertyValue ("DefaultButton", True) - oDialogModel.insertByName ("btnOK", oButtonModel) - - ' Adds the dialog model to the control and runs it. - oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog") - oDialog.setModel (oDialogModel) - oDialog.setVisible (True) - nResult = oDialog.execute - oDialog.dispose - - ' Cancelled - If nResult = 0 Then + ' Specifies the data + mRanges = fnSpecifyData (oRange, _ + "&12.Dlg2SpecData.txtPrompt1.Label5Chi2GoF", _ + "&13.Dlg2SpecData.txtPrompt2.Label5Chi2GoF") + If IsNull (mRanges) Then Exit Sub End If - nColumn = oListModel1.getPropertyValue ("SelectedItems") (0) - oRange1 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - nColumn = oListModel2.getPropertyValue ("SelectedItems") (0) - oRange2 = oRange.getCellRangeByPosition ( _ - nColumn, 0, nColumn, oRange.getRows.getCount - 1) - ' Checks the existing report oSheets = ThisComponent.getSheets - sSheetName = oRange1.getSpreadsheet.getName - sExisted = "" + sSheetName = oRange.getSpreadsheet.getName If oSheets.hasByName (sSheetName & "_chi2") Then - sExisted = sExisted & ", """ & sSheetName & "_chi2""" - End If - If sExisted <> "" Then - sExisted = Right (sExisted, Len (sExisted) - 2) - If InStr (sExisted, ",") > 0 Then - sExisted = "Spreadsheets " & sExisted & " exist. Overwrite?" - Else - sExisted = "Spreadsheet " & sExisted & " exists. Overwrite?" - End If + sExisted = "Spreadsheet """ & sSheetName & "_chi2"" exists. Overwrite?" nResult = MsgBox(sExisted, MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION) If nResult = IDNO Then Exit Sub End If - ' Drops the existing report - If oSheets.hasByName (sSheetName & "_chi2") Then - oSheets.removeByname (sSheetName & "_chi2") - End If + oSheets.removeByname (sSheetName & "_chi2") End If ' Reports the chi-square goodness of fit - subReportChi2GoodnessOfFit (ThisComponent, oRange1, oRange2) + subReportChi2GoodnessOfFit (ThisComponent, mRanges (0), mRanges (1)) ' Makes the report sheet active. oSheet = oSheets.getByName (sSheetName & "_chi2") diff --git a/_0Main.vb b/9Tools.vb similarity index 57% rename from _0Main.vb rename to 9Tools.vb index d518850..ac38e68 100644 --- a/_0Main.vb +++ b/9Tools.vb @@ -1,23 +1,12 @@ -' _0Main: The main module for the statistics macros +' 9Tools: The tool macros ' by imacat , 2016-08-10 Option Explicit -' subMain: The main program -Sub subMain +Sub subTest BasicLibraries.loadLibrary "XrayTool" - subRunCorrelation - 'subRunPairedTTest - 'subRunIndependentTTest - 'subRunAnova - 'subRunChi2GoodnessOfFit - 'subTestCorrelation - 'subTestPairedTTest - 'subTestIndependentTTest - 'subTestANOVA - 'subTestChi2GoodnessOfFit - + MsgBox fnFormatString ("abc % def", Array ("ghi")) End Sub ' fnCheckRangeName: Checks the range name and returns the range when @@ -100,51 +89,56 @@ Function fnFindStatsTestDocument As Object Loop End Function +' fnSpecifyData: Specifies the data +Function fnSpecifyData (oRange As Object, sPrompt1 As String, sPrompt2 As String) As Object + Dim mLabels (oRange.getColumns.getCount - 1) As String + Dim nI As Integer, mSelected (0) As Integer + Dim oDialog As Object, oTextModel As Object + Dim oListModel1 As object, oListModel2 As Object + Dim nResult As Integer, nColumn As Integer, mRanges (1) As Object + + For nI = 0 To oRange.getColumns.getCount - 1 + mLabels (nI) = oRange.getCellByPosition (nI, 0).getString + Next nI + + ' Runs the dialog + oDialog = CreateUnoDialog (DialogLibraries.Stats.Dlg2SpecData) + oTextModel = oDialog.getControl ("txtPrompt1").getModel + oTextModel.setPropertyValue ("Label", sPrompt1) + oListModel1 = oDialog.getControl ("lstData1").getModel + oListModel1.setPropertyValue ("StringItemList", mLabels) + mSelected (0) = 0 + oListModel1.setPropertyValue ("SelectedItems", mSelected) + oTextModel = oDialog.getControl ("txtPrompt2").getModel + oTextModel.setPropertyValue ("Label", sPrompt2) + oListModel2 = oDialog.getControl ("lstData2").getModel + oListModel2.setPropertyValue ("StringItemList", mLabels) + mSelected (0) = 1 + oListModel2.setPropertyValue ("SelectedItems", mSelected) + + nResult = oDialog.execute + oDialog.dispose + + ' Cancelled + If nResult = 0 Then + Exit Function + End If + + nColumn = oListModel1.getPropertyValue ("SelectedItems") (0) + mRanges (0) = oRange.getCellRangeByPosition ( _ + nColumn, 0, nColumn, oRange.getRows.getCount - 1) + nColumn = oListModel2.getPropertyValue ("SelectedItems") (0) + mRanges (1) = oRange.getCellRangeByPosition ( _ + nColumn, 0, nColumn, oRange.getRows.getCount - 1) + fnSpecifyData = mRanges +End Function + ' fnAskDataRange: Asks the user for the data range, or null when ' the user cancelled Function fnAskDataRange (oDoc As Object) As Object - Dim oRange As Object, sPrompt As String, sCellsData As String - - oRange = fnFindActiveDataRange (oDoc) - If IsNull (oRange) Then - sCellsData = "" - Else - sCellsData = oRange.getPropertyValue ("AbsoluteName") - End If - sPrompt = "Cells with the data:" - - ' Loop until we get good answer - Do While sPrompt <> "" - sCellsData = InputBox (sPrompt, "Step 1/2: Select the data range", sCellsData) - - ' Cancelled - If sCellsData = "" Then - Exit Function - End If - - oRange = fnCheckRangeName (oDoc, sCellsData) - If IsNull (oRange) Then - sPrompt = "The range """ & sCellsData & """ does not exist." - Else - If oRange.getRows.getCount < 2 Or oRange.getColumns.getCount < 2 Then - sPrompt = "The range """ & sCellsData & """ is too small (at least 2×2)." - Else - sPrompt = "" - oDoc.getCurrentController.select (oRange) - fnAskDataRange = oRange - Exit Function - End If - End If - Loop -End Function - -' fnAskDataRange2: Asks the user for the data range, or null when -' the user cancelled -Function fnAskDataRange2 (oDoc As Object) As Object Dim oRange As Object - Dim oDialogModel As Object, oDialog As Object, nResult As Integer + Dim oDialog As Object, nResult As Integer Dim oTextModel As Object, oEditModel As Object - Dim oButtonModel As Object Dim sPrompt As String, sCellsData As String oRange = fnFindActiveDataRange (oDoc) @@ -153,66 +147,17 @@ Function fnAskDataRange2 (oDoc As Object) As Object Else sCellsData = oRange.getPropertyValue ("AbsoluteName") End If - sPrompt = "Cells with the data:" + sPrompt = "&27.Dlg1AskRange.txtPrompt.Label" ' Loop until we finds good data Do While sPrompt <> "" - ' Creates a dialog - oDialogModel = CreateUnoService ( _ - "com.sun.star.awt.UnoControlDialogModel") - oDialogModel.setPropertyValue ("PositionX", 200) - oDialogModel.setPropertyValue ("PositionY", 200) - oDialogModel.setPropertyValue ("Height", 65) - oDialogModel.setPropertyValue ("Width", 95) - oDialogModel.setPropertyValue ("Title", "Step 1/2: Select the data range") - - ' Adds the prompt. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 5) - oTextModel.setPropertyValue ("Height", 15) - oTextModel.setPropertyValue ("Width", 85) + ' Runs the dialog + oDialog = CreateUnoDialog (DialogLibraries.Stats.Dlg1AskRange) + oTextModel = oDialog.getControl ("txtPrompt").getModel oTextModel.setPropertyValue ("Label", sPrompt) - oTextModel.setPropertyValue ("MultiLine", True) - oTextModel.setPropertyValue ("TabIndex", 1) - oDialogModel.insertByName ("txtPrompt", oTextModel) - - ' Adds the text input. - oEditModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlEditModel") - oEditModel.setPropertyValue ("PositionX", 5) - oEditModel.setPropertyValue ("PositionY", 25) - oEditModel.setPropertyValue ("Height", 15) - oEditModel.setPropertyValue ("Width", 85) + oEditModel = oDialog.getControl ("edtCellsData").getModel oEditModel.setPropertyValue ("Text", sCellsData) - oDialogModel.insertByName ("edtCellsData", oEditModel) - ' Adds the buttons. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 5) - oButtonModel.setPropertyValue ("PositionY", 45) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.CANCEL) - oDialogModel.insertByName ("btnClose", oButtonModel) - - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 50) - oButtonModel.setPropertyValue ("PositionY", 45) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 40) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.OK) - oDialogModel.insertByName ("btnOK", oButtonModel) - - ' Adds the dialog model to the control and runs it. - oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog") - oDialog.setModel (oDialogModel) - oDialog.setVisible (True) nResult = oDialog.execute oDialog.dispose @@ -223,14 +168,14 @@ Function fnAskDataRange2 (oDoc As Object) As Object sCellsData = oEditModel.getPropertyValue ("Text") If sCellsData = "" Then - sPrompt = "Cells with the data:" + sPrompt = "&27.Dlg1AskRange.txtPrompt.Label" Else oRange = fnCheckRangeName (oDoc, sCellsData) If IsNull (oRange) Then - sPrompt = "The range """ & sCellsData & """ does not exist." + sPrompt = "&35.Dlg1AskRange.txtPrompt.LabelNotExists" Else If oRange.getRows.getCount < 2 Or oRange.getColumns.getCount < 2 Then - sPrompt = "The range """ & sCellsData & """ is too small (at least 2×2)." + sPrompt = "&36.Dlg1AskRange.txtPrompt.LabelTooSmall" Else sPrompt = "" oDoc.getCurrentController.select (oRange)