我会尽量缩短时间。 我需要根据他们所处的工作表重写一些单元格的公式。
Dim sFrmla As String
Dim rSomerange As Range
Let sFrmla = "=OFFSET(INDIRECT(INDIRECT(" & Chr(34) & "E" & Chr(34) & "&ROW()));0;"
Let rSomerange.Formula = sFrmla & wsSheet.Name & "_ZERO_SCALE)"
Let rSomerange.Formula = sFrmla & wsSheet.Name & "_FULL_SCALE)"
Let rSomerange.Formula = sFrmla & wsSheet.Name & "_PRCSUNIT)"
这在第二行(Zero_scale)崩溃,并给我一个运行时错误1004.我已经确定范围本身存在且可写。
有趣的是,相同的代码,但没有公式字符串可以正常工作。
Let rSomerange.Formula = wsSheet.Name & "_ZERO_SCALE)"
有什么想法吗?
答案 0 :(得分:1)
Let
关键字。在这种情况下,它很奇怪。,
或分号;
),您应该始终使用逗号
,
Range.Formula
;
。如果您想使用您的区域
分隔符(在您的情况下为分号Range.FormulaLocal
),使用sFrmla = "=OFFSET(INDIRECT(INDIRECT(" & Chr(34) & "E" & Chr(34) & "&ROW())),0,"
rSomerange.Formula = sFrmla & wsSheet.Name & "_ZERO_SCALE)"
代替。所以,你应该使用:
sFrmla = "=OFFSET(INDIRECT(INDIRECT(" & Chr(34) & "E" & Chr(34) & "&ROW()));0;"
rSomerange.FormulaLocal = sFrmla & wsSheet.Name & "_ZERO_SCALE)"
或
sFrmla = "=OFFSET(INDIRECT(INDIRECT(""E""&ROW())),0,"
或更短的版本:
{{1}}