根据另一个单元格中的值跳转到单元格(宏 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 是一个我无法立即弄清楚的错误。
我希望能够根据用户输入日期(在 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 是一个我无法立即弄清楚的错误。