【发布时间】:2016-10-10 08:45:56
【问题描述】:
我试图在宏中引用不同的工作表而不明确引用它们,以使宏与任何范围的工作表兼容。我一直很高兴地使用 (ActiveSheet.Index +/- 1) 在工作表之间切换,但是在输入公式时,到目前为止我找不到任何可以帮助我的东西。
到目前为止,我所走的路线是使用我在以下位置找到的宏:http://www.cpearson.com/excel/sheetref.htm
在单元格中输入时引用下一张表的名称。例如=NextSheetName() 返回“表 2”。
我将该结果与 !标记并将其定义为 nexxxtsheet。
所以当我输入公式时
ActiveCell.FormulaR1C1 = "=" & nexxxtsheet & " "A1"
我希望单元格具有公式:='下一张表的名称'!A1
但是它返回='下一张纸的名称'!'A1'
不同之处在于 A1 周围的引号 - 使公式无用。我对 VBA 比较陌生,不知道为什么会发生这种情况,而且我完全确定我用来在没有直接参考的情况下切换工作表的方法是,因为没有更好的术语,而是相当古怪的风格。我非常愿意接受有关如何更好地在工作表之间切换或更正以使我的公式有用的建议。
谢谢大家!
【问题讨论】:
-
定义
Dim nexxxtsheet As String,设置nexxxtsheet = "Sheet2"(例如),并使用Formula(不是FormulaR1C1),例如:ActiveCell.Formula = "=" & nexxxtsheet & "!" & "A1"。请记住,最好避免使用ActiveCell -
非常感谢您的帮助 - 因为我是新手,所以我想知道您能否解释一下公式和公式 R1C1 之间的区别是什么?
-
@LukasLjungstrom R1C1 是引用单元格的另一种方式(通过它们的 Row 和 C 列号)。例如,R2C3 是通常称为 C2 的单元。
.FormulaR1C1用于使用这些引用设置公式(excel 将在之后转换它们),因此它不将 A1 理解为单元格引用。如果你搜索 R1C1 参考风格,你会发现很多信息。