根据另一个单元格中的值跳转到单元格(宏 LibreOffice VBA)

Jump to Cell Based on Value in Another Cell (Macro LibreOffice VBA)

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

我需要在 LibreOffice VBA 中编写一个宏,它将 select 该行中 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 名称,sheet=Sheets.getByName("ThisYear"),但它都在一个 sheet 中,所以理想情况下我不想指定它,所以我可以使用宏在不同的 sheets.

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

谢谢!

我了解到您在弄清楚如何更改 LibreOffice Calc 中的单元格选择时遇到了问题。这是一个代码片段,向您展示了如何。简而言之,您确定一个目标范围 (oRange)(下面是位于 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 记录 here。如果您想浏览某个对象的属性和方法,请使用 MsgBox oObject.DBG_properties.DBG_methods,您通常最终能够找到正确的内容。您问题中的代码片段 returns 是一个我无法立即弄清楚的错误。