我正在尝试使用本机 Basic 在 Libre Calc 中复制 Excel 宏。
我遇到了我认为应该是一个简单的问题/解决方案(对于那些知道自己在做什么的人)。
我想从 3 个单元格(例如 A1 到 A3)复制公式,然后粘贴到同一张工作表中的单元格 B1 到 B3 中。我可以让它复制/粘贴值,但不能复制公式。
很高兴将单元格作为数组复制/粘贴,或通过循环单独复制/粘贴。最简单且可行的。
我已尝试以下操作(请注意,单元格引用不反映 A1:A3 / B1 到 B3,而是我的实际单元格引用),虽然复制/粘贴了公式,但它不会动态更新以反映已粘贴的单元格就像在 Excel 中一样。所以问题是,我如何修改下面的代码以允许公式动态更新?我尝试复制的第一个公式是 =SUMIF(F8:$F$13,"<>#VALUE!")*C8。当我在 Excel 中将其复制并粘贴到第一个目标单元格时,它会更新为 =SUMIF(F13:$F$13,"<>#VALUE!")*C13。更广泛的宏在循环上运行,因此当它将其复制并粘贴到下一个单元格(向下 1 行)时,它会更新为 =SUMIF(F$13:$F14,"<>#VALUE!")*C14 (依此类推)等等)。
Dim srcRange As Object
Dim destRange As Object
' Set the source range
srcRange = OutputSheet.getCellRangeByPosition(8, 7, 10, 7)
' Set the destination range
destRange = OutputSheet.getCellRangeByPosition(8, Row, 10, Row)
' Copy the formulas from the source range to the destination range
destRange.FormulaArray = srcRange.FormulaArray
提前非常感谢。
保罗
使用Range对象的fillAuto()方法
destRange = OutputSheet.getCellRangeByPosition(8, 7, 10, nLastRow)
destRange.fillAuto(com.sun.star.sheet.FillDirection.TO_BOTTOM, 1)
换句话说,获取要使用公式填充的整个范围以及填充的第一个示例行,并使用必要的参数调用该方法。