首页 > 解决方案 > 使用 Applescript 在 Numbers 中访问具有偏移参考的单元格

问题描述

如何在 Excel VBA 中引用相对于 Applescript 中另一个单元格的单元格?在 Excel VBA 中,我可以使用“偏移量”来设置单元格 D2 的值:

Range("A1").Offset(1,3).Value = "Example"

我到处搜索,但 Numbers Applescript 中似乎没有“偏移”命令,尽管它非常方便。

任何帮助深表感谢!

标签: applescriptapplescript-numbers

解决方案


为了补充大卫的出色回答......

如果您需要模仿 VBA 表达式,可以将 David 答案中的示例代码滚动到handler中,如下例所示。

on setCellOffsetValue(cl, co, ro, val)
    tell application "Numbers"
        tell table 1 of sheet 1 of document 1
            set c to cell cl's column's address as number
            set r to cell cl's row's address as number
            set value of cell (c + co) of row (r + ro) to val
        end tell
    end tell
end setCellOffsetValue

现在您可以通过调用它在同一个脚本中多次使用它,例如:

setCellOffsetValue("A1", 3, 1, "Example")

正如你在这个版本中看到的,setCellOffsetValue 处理程序有四个参数

  • cl- 要偏移的单元格。
  • co- 与单元格的列偏移量。
  • ro- 与单元格的行偏移量)。
  • val- 偏移单元格的值。

setCellOffsetValue 处理程序放在您的脚本中并根据需要调用它。


上面的处理程序具有tablesheetdocument硬编码,每个都为1. 但是,在此示例中,您还将该信息传递给处理程序

on setCellOffsetValue(cl, co, ro, val, t, s, d)
    tell application "Numbers"
        tell table t of sheet s of document d
            set c to cell cl's column's address as number
            set r to cell cl's row's address as number
            set value of cell (c + co) of row (r + ro) to val
        end tell
    end tell
end setCellOffsetValue

现在您可以通过调用它在同一个脚本中多次使用它,例如:

setCellOffsetValue("A1", 3, 1, "Example", 1, 1, 1)

或者:

setCellOffsetValue("A1", 3, 1, "Example", "Table 1", "Sheet 1", "Untitled")

最后三个参数可以是它们的数值名称 value,视当时的需要而定。

此版本对于具有多个表格和/或工作以及需要定位其他对象的文档非常方便。table 1 of sheet 1 of document 1

正如你在这个版本中看到的,setCellOffsetValue 处理程序有七个参数

  • cl- 要偏移的单元格。
  • co- 与单元格的列偏移量。
  • ro- 与单元格的行偏移量)。
  • val- 偏移单元格的值。
  • t- 表号或名称。
  • s- 工作表编号或名称。
  • d- 文件编号或名称。

注意:示例 AppleScript 代码就是这样,并且不包含任何可能适当的错误处理。用户有责任根据需要或需要添加任何错误处理。查看AppleScript 语言指南中的try 语句错误 语句。另请参阅处理错误


推荐阅读