By "Dynamically" I mean that the range (i.e. the second parameter) is not hard coded into the method as something like "Sheet1.C3:F7", but created depending on an input. I have tried this:
Code: Select all
Sub AddNR
Dim Doc As Object, Sheet As Object, Cell As Object
Dim L As Integer
Dim Outputs As Object, Outputs0 As Object
Dim Outputs0Address As new com.sun.star.table.CellAddress
Dim OutputsRangeAddress As new com.sun.star.table.CellRangeAddress
Dim OutputsString As String
Dim Converter As Object
Doc = ThisComponent
Sheet=Doc.Sheets.getByName("AddNR")
Cell = Sheet.getCellRangeByName("NN")
L=Cell.Value
Outputs0 = Sheet.getCellRangeByName("OUT0")
Outputs0Address = Outputs0.CellAddress
OutputsRangeAddress.Sheet = Outputs0.CellAddress.Sheet
OutputsRangeAddress.StartColumn = Outputs0.CellAddress.Column
OutputsRangeAddress.StartRow = Outputs0.CellAddress.Row
OutputsRangeAddress.EndColumn = Outputs0.CellAddress.Column+3
OutputsRangeAddress.EndRow = Outputs0.CellAddress.Row+L-1
Converter = Doc.createInstance("com.sun.star.table.CellRangeAddressConversion")
Converter.Address = OutputsRangeAddress
OutputsString = Converter.UserInterfaceRepresentation
Doc.NamedRanges.addNewByName("OUTPUTS", OutputsString, Outputs0Address, 0)
End Sub
Notes:
1.The Converter comes from section 6.6 of Andrew Pitonyak's Useful Macro Information.
2. I realise I could probably do it without a Named Range, but would like to know what is happening and why it doesn't work.