格式化stringVBA中的公式

我有一个脚本,需要将一个公式放入一个单元格,但我从第一部分得到一个1004错误,我确信我格式化了错误。 我很难处理这个string中的标记,但是得到了一些结果,所以我认定我错过了别的东西,这些信元也是不受保护的。

Worksheets(CurSheet + 1).Range("D" & Y).Value = "=IF(D52=1,0,IF(C52=" & """Saturday""" & ",0,'" & CurSheet & "!C" & Y & "))" 

这是给出错误的部分。 如果是删除代码的作品。

 "=IF(D52=1,0,IF(C52=" 

我不知道我在做什么这个部分错了。

它看起来像使用CurSheet作为工作表索引号和工作表名称。
索引编号只是返回表单在工作簿中的相对位置,而名称就是您在工作表选项卡上看到的内容(还有CodeName但我不会在这里进入)。

虽然我没有完全理解这个代码之后你会发现一个公式在工作表索引号识别的工作表上,所以如果CurSheet = 1(+1),它会把公式放在第二个工作表上。
公式本身将引用公式出现在工作表之前的工作表的名称(所以如果公式在第二个工作表上,公式将引用第一个工作表)。

 Sub Test() Dim Y As Long Dim CurSheet As Long Y = 1 CurSheet = 1 Worksheets(CurSheet + 1).Range("D" & Y).Formula = _ "=IF(D52=1,0,IF(C52=" & """Saturday""" & ",0,'" & Worksheets(CurSheet).Name & "'!C" & Y & "))" End Sub 

希望我已经说得够清楚了。 🙂

你需要声明你正在input一个公式,而不是一个值:

更改:

 Worksheets(CurSheet + 1).Range("D" & Y).Value 

至:

 Worksheets(CurSheet + 1).Range("D" & Y).Formula