From ec18e2545c752c2d33e16f23de6b2dfd6a04e0e7 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Ledure Date: Sat, 27 Nov 2021 12:45:34 +0100 Subject: ScriptForge - (SF_Calc) fix ShiftXXX() methods with negative offset Example: oCalc.ShiftDown("A10:D15", , -1) gives an "Objectvariable not set" Basic runtime error. Fixed by replacing 4x '= 0' by '<= 0' test in If statements checking the argument value. Change-Id: I272112a1addd303b7b38d3d9eb2ef73034e28727 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125939 Tested-by: Jean-Pierre Ledure Tested-by: Jenkins Reviewed-by: Jean-Pierre Ledure --- wizards/source/sfdocuments/SF_Calc.xba | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'wizards') diff --git a/wizards/source/sfdocuments/SF_Calc.xba b/wizards/source/sfdocuments/SF_Calc.xba index 0eca75aa25f3..e5b35e4afa12 100644 --- a/wizards/source/sfdocuments/SF_Calc.xba +++ b/wizards/source/sfdocuments/SF_Calc.xba @@ -2548,7 +2548,7 @@ Try: ' Manage the height of the area to shift ' The insertCells() method inserts a number of rows equal to the height of the cell range to shift lHeight = .Height - If Rows = 0 Then Rows = lHeight + If Rows <= 0 Then Rows = lHeight If _LastCell(.XSpreadsheet)(1) + Rows > MAXROWS Then GoTo Catch If Rows <> lHeight Then Set oShiftAddress = _Offset(oSourceAddress, 0, 0, Rows, 0).XCellRange.RangeAddress @@ -2630,7 +2630,7 @@ Try: ' Manage the width of the area to delete ' The removeRange() method erases a number of columns equal to the width of the cell range to delete lWidth = .Width - If Columns = 0 Then Columns = lWidth + If Columns <= 0 Then Columns = lWidth If Columns < lWidth Then Set oShiftAddress = _Offset(oSourceAddress, 0, 0, 0, Columns).XCellRange.RangeAddress Else ' Columns is capped at the range width @@ -2710,7 +2710,7 @@ Try: ' Manage the width of the area to Shift ' The insertCells() method inserts a number of columns equal to the width of the cell range to Shift lWidth = .Width - If Columns = 0 Then Columns = lWidth + If Columns <= 0 Then Columns = lWidth If _LastCell(.XSpreadsheet)(0) + Columns > MAXCOLS Then GoTo Catch If Columns <> lWidth Then Set oShiftAddress = _Offset(oSourceAddress, 0, 0, 0, Columns).XCellRange.RangeAddress @@ -2792,7 +2792,7 @@ Try: ' Manage the height of the area to delete ' The removeRange() method erases a number of rows equal to the height of the cell range to delete lHeight = .Height - If Rows = 0 Then Rows = lHeight + If Rows <= 0 Then Rows = lHeight If Rows < lHeight Then Set oShiftAddress = _Offset(oSourceAddress, 0, 0, Rows, 0).XCellRange.RangeAddress Else ' Rows is capped at the range height -- cgit