Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在字符串VBA中格式化公式_Vba_Excel_Excel Formula - Fatal编程技术网

在字符串VBA中格式化公式

在字符串VBA中格式化公式,vba,excel,excel-formula,Vba,Excel,Excel Formula,我有一个脚本,需要把一个公式放入一个单元格,但我从第一部分得到了一个1004错误,我确信我格式化了一些错误。我在处理字符串中的“标记”时遇到了困难,但我已经解决了这些问题,所以我认为我遗漏了其他一些东西。这些细胞也没有受到保护 Worksheets(CurSheet + 1).Range("D" & Y).Value = "=IF(D52=1,0,IF(C52=" & """Saturday""" & ",0,'" & CurSheet & "!C" &a

我有一个脚本,需要把一个公式放入一个单元格,但我从第一部分得到了一个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=" 

我不确定这部分有什么问题。

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

更改:

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


看起来您正在使用
CurSheet
作为工作表索引号和工作表名称。
索引号只返回工作表在工作簿中的相对位置,而名称就是您在“工作表”选项卡上看到的名称(还有
CodeName
,但我在这里不赘述)

虽然我不完全理解您的意图,但此代码将在图纸索引编号标识的图纸上放置公式,因此如果CurSheet=1(+1),它将在第二张图纸上放置公式。
公式本身将引用出现公式的工作表之前的工作表名称(因此,如果公式位于第二张工作表上,则公式将引用第一张工作表)


希望我说得足够清楚。

什么是
游标表
声明的?分配给它的值是什么?看起来你在使用
游标表
作为你的工作表的索引号,但是你在公式中使用它作为一个名称,在公式中使用它之后,你缺少了一个
您的工作簿必须至少包含2张工作表,必须有一张名为
1
Y
的工作表,并且
CurSheet
必须设置为1,您需要添加缺少的
,并将
.Value
更改为
。Formula
,但我想这不是您想要的。它将添加公式
=IF(D52=1,0,IF(C52=)星期六”,0,'1'!C1))
到名为
1
的工作表中的单元格D1。您可以将代码重写为
Y=1:CurSheet=1:Worksheets(CurSheet+1)。范围(“D”&Y)。公式=“=IF(D52=1,0,IF(C52=“&”“星期六”&,“0”&”“和工作表(CurSheet)。名称&“!C”&Y&”)“
@DarrenBartrup-Cook我建议你把配方奶粉列为answer@DarrenBartrup-库克:你的答案很有效,是(草表)上的名字出错了。我会在几分钟内尝试一下。我不知道您可以指定无法工作的typeWell,但它通知了我键入问题。我以后再进一步调查这不是问题所在。在许多情况下,无论您使用
.Formula
还是
.Value
属性,都不会产生任何影响。你真的试过运行OP的公式并让它正常工作了吗?工作表名称是1-31,我在循环中使用游标表作为排序索引,在创建工作表时将公式添加到工作表中,但显然我需要在代码中添加.name,因为这解决了问题!
Worksheets(CurSheet + 1).Range("D" & Y).Formula
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