如何在 Excel VBA 中引用相对于 Applescript 中另一个单元格的单元格?在 Excel VBA 中,我可以使用“偏移量”来设置单元格 D2 的值:
Range("A1").Offset(1,3).Value = "Example"
我到处搜索,但 Numbers Applescript 中似乎没有“偏移”命令,尽管它非常方便。
任何帮助深表感谢!
如何在 Excel VBA 中引用相对于 Applescript 中另一个单元格的单元格?在 Excel VBA 中,我可以使用“偏移量”来设置单元格 D2 的值:
Range("A1").Offset(1,3).Value = "Example"
我到处搜索,但 Numbers Applescript 中似乎没有“偏移”命令,尽管它非常方便。
任何帮助深表感谢!
为了补充大卫的出色回答......
如果您需要模仿 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
处理程序放在您的脚本中并根据需要调用它。
上面的处理程序具有table
、sheet
和document
硬编码,每个都为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 语句和错误 语句。另请参阅处理错误。
编辑:感谢 user3439894 指出我的第一个答案的问题 - 这是完全错误的,基于 Excel 而不是 Numbers。
这是一个完整的脚本示例,展示了在 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