在字符串VBA中格式化公式
我有一个脚本,需要把一个公式放入一个单元格,但我从第一部分得到了一个1004错误,我确信我格式化了一些错误。我在处理字符串中的“标记”时遇到了困难,但我已经解决了这些问题,所以我认为我遗漏了其他一些东西。这些细胞也没有受到保护在字符串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
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