使用Applescript访问带有数字的偏移量引用的单元格

时间:2018-10-15 18:31:38

标签: applescript applescript-numbers

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

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

我搜索了所有地方,但是Numbers Applescript中似乎没有一个“偏移”命令,尽管它非常方便。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

编辑:感谢user3439894指出了我的第一个答案的问题-这完全错误,基于Excel而不是数字。

这是一个完整的脚本示例,在Numbers中展示了一种实现目标的方法:

tell application "Numbers"
    tell table 1 of sheet 1 of document 1
        set c to cell "A1"'s column's address as number
        set r to cell "A1"'s row's address as number
        set value of cell (c + 3) of row (r + 1) to "Example"
    end tell
end tell

您可以将set命令压缩为一行,如下所示:

tell application "Numbers"
    tell table 1 of sheet 1 of document 1
        set value of cell ((cell "A1"'s column's address as number) + 3) of row ((cell "A1"'s row's address as number) + 1) to "Example"
    end tell
end tell

答案 1 :(得分:1)

为补充David的出色回答...

如果您需要模仿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 handler 并根据需要调用它。


上面的 handler 具有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")

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

该版本适用于具有多个和/或 sheets 且需要定位其他table 1 of sheet 1 of document 1以外的文档的文档

在此版本中可以看到,setCellOffsetValue 处理程序具有七个参数

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

注意:示例AppleScript代码就是这样,并且不包含任何适当的错误处理。用户有责任添加适当,需要或想要的任何错误处理。在 try 中查看error 声明AppleScript Language Guide 声明。另请参见Working with Errors