0

我希望能够根据用户输入的日期(在 B14 中)跳转到一个单元格。在 F 列中,我有一个日期列表(从第 8 行开始)。到目前为止,我有=MATCH(B14,F8:F373)+7(在 B15 中)计算正确日期在哪一行,并返回一个数字。

我需要在 LibreOffice VBA 中编写一个宏,它将在 G 列中选择该行中的单元格。到目前为止,我有:

sub jump

dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

Doc = ThisComponent
Sheets=Doc.Sheets
sheet=Sheets.getByName("ThisYear")

dim args1(0) as new com.sun.star.beans.PropertyValue

thisrow =sheet.getCellByPosition(15,2).getValue()

args1(0).Name = "ToPoint"
args1(0).Value = (G,thisrow)

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

end sub

但它不接受形式(列、行)中的值。我以前见过我需要类似的东西, args1(0).Value = "G15"但我怎样才能包含变量?(我曾尝试使用 7 而不是 G 但这无济于事。)

我已经提到了工作表名称,sheet=Sheets.getByName("ThisYear")但它都在一张工作表中,所以理想情况下我不想指定这个,所以我可以在不同的工作表中使用宏。

我是 VBA 新手,所以请用整个子回复。

谢谢!

4

1 回答 1

0

我了解到您无法弄清楚如何在 LibreOffice Calc 中更改单元格选择。这是一个向您展示如何操作的代码片段。简而言之,您确定一个目标范围 ( oRange)(下面是 location 的单个单元格3,3),然后将该对象传递给该.select()方法。

Sub ChangeSelection
  oSheets = ThisComponent.Sheets
  oSheet = oSheets.getByIndex(0)
  oRange = oSheet.getCellByPosition(3,3)
  ThisComponent.CurrentController.select(oRange)

End Sub

LibreOffice 使用此处记录的 UNO API 。如果您想浏览对象的属性和方法,请使用MsgBox oObject.DBG_propertiesor .DBG_methods,您通常最终能够找到正确的东西。您问题中的代码段返回一个我无法立即弄清楚的错误。

于 2015-08-31T18:29:00.007 回答