von Stephan » Fr, 27.08.2021 10:25
Die Fehlermeldung kommt weil Du einem CellRange keine Formel zuweisen kannst, sondern nur den jeweiligen Zellen des CellRange.
es geht im Konkreten:
Code: Alles auswählen
Sub Main2
Dim oDoc As Object
Dim oSheet As Object
Dim oRange as Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0)
For i = 15 To 20
oSheet.getCellRangeByName("C" & i).setFormula("=E" & i & "&F" & i)
Next i
End Sub
Für allgemeine Verwendung ist aber möglicherweise ein Misch-Masch von nativen Makro- und dispatcher-Code pragmatischer (eine allumfassend optimale Implementierung ist das aber auch nicht):
Code: Alles auswählen
Sub Main
Dim oDoc As Object
Dim oSheet As Object
Dim oRange as Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oSheet.getCellRangeByName("C15").setFormula("=E15&F15")
oDoc.CurrentController.Select(oSheet.getCellRangeByName("C15"))
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
oRange=oSheet.getCellRangeByName("C15:C20")
oDoc.CurrentController.Select(oRange)
dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Flags"
args1(0).Value = "F"
args1(1).Name = "FormulaCommand"
args1(1).Value = 0
args1(2).Name = "SkipEmptyCells"
args1(2).Value = false
args1(3).Name = "Transpose"
args1(3).Value = false
args1(4).Name = "AsLink"
args1(4).Value = false
args1(5).Name = "MoveMode"
args1(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args1())
End Sub
Gruß
Stephan
Die Fehlermeldung kommt weil Du einem CellRange keine Formel zuweisen kannst, sondern nur den jeweiligen Zellen des CellRange.
es geht im Konkreten:
[code]Sub Main2
Dim oDoc As Object
Dim oSheet As Object
Dim oRange as Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0)
For i = 15 To 20
oSheet.getCellRangeByName("C" & i).setFormula("=E" & i & "&F" & i)
Next i
End Sub
[/code]
Für allgemeine Verwendung ist aber möglicherweise ein Misch-Masch von nativen Makro- und dispatcher-Code pragmatischer (eine allumfassend optimale Implementierung ist das aber auch nicht):
[code]Sub Main
Dim oDoc As Object
Dim oSheet As Object
Dim oRange as Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0)
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oSheet.getCellRangeByName("C15").setFormula("=E15&F15")
oDoc.CurrentController.Select(oSheet.getCellRangeByName("C15"))
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
oRange=oSheet.getCellRangeByName("C15:C20")
oDoc.CurrentController.Select(oRange)
dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Flags"
args1(0).Value = "F"
args1(1).Name = "FormulaCommand"
args1(1).Value = 0
args1(2).Name = "SkipEmptyCells"
args1(2).Value = false
args1(3).Name = "Transpose"
args1(3).Value = false
args1(4).Name = "AsLink"
args1(4).Value = false
args1(5).Name = "MoveMode"
args1(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args1())
End Sub[/code]
Gruß
Stephan