在字符串VBA中格式化公式

时间:2017-10-19 13:23:09

标签: excel vba excel-vba excel-formula

我有一个脚本需要将公式放入单元格但是我从第一部分得到1004错误我确定我格式化了错误。我对“字符串中的标记感到困难,但是那些已经解决了,所以我觉得我错过了其他的东西。细胞也没有受到保护。

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

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

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

我不确定这部分我做错了什么。

2 个答案:

答案 0 :(得分:1)

您似乎正在使用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  

希望我说得那么清楚。 :)

答案 1 :(得分:0)

您需要声明您输入的是公式,而不是值:

变化:

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

要:

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