在最后一个ListRows中使用带有变量的.Formula

时间:2017-10-11 16:42:13

标签: excel-vba vba excel

我正在尝试使用.Formula将公式插入到新创建的最后一个ListRows中。 这段代码可以使用

oNewRow.Range(0, 2).Formula = "=IF(COUNTIF(A:A,[@PRODNAME])<=1,""100-"" & CHAR(72) & ""-0""&COUNTIF(A:A,[@PRODNAME]),)" 

这个公式没有问题,但我需要CHAR()用变量表示。

谢谢。

Dim cChr As Integer
Dim tbl As ListObject
Dim tblRows As Integer
Dim oNewRow As ListRow



Set tbl = ThisWorkbook.Worksheets("100-0-00").ListObjects("TBL_tertiary129")


Set oNewRow = tbl.ListRows.Add(AlwaysInsert:=True)

tblRows = tbl.ListRows.Count


cChr = (65 + tblRows - 2) 'Increment alpha value based on position

MsgBox (Chr(cChr))


oNewRow.Range(0, 2).Formula = "=IF(COUNTIF(A:A,[@PRODNAME])<=1,""100-"" & CHAR(" & cChr & ")""-0"" &COUNTIF(A:A,[@PRODNAME]),)" 'Problem with Formula within Quotes    

1 个答案:

答案 0 :(得分:1)

看起来你错过了一个&符号。目前,如果cChr设置为72,则您的公式为:

=IF(COUNTIF(A:A,[@PRODNAME])<=1,"100-" & CHAR(72)"-0" &COUNTIF(A:A,[@PRODNAME]),)

您会在CHAR(72)之后看到没有&符号与"-0"连接。相反:

oNewRow.Range(0, 2).Formula = "=IF(COUNTIF(A:A,[@PRODNAME])<=1,""100-"" & CHAR(" & cChr & ") & ""-0"" &COUNTIF(A:A,[@PRODNAME]),)"

如果您在紧急窗格中回显连接结果,这很容易捕获:

debug.print "=IF(COUNTIF(A:A,[@PRODNAME])<=1,""100-"" & CHAR(" & cChr & ")""-0"" &COUNTIF(A:A,[@PRODNAME]),)"

在将它投射到范围.formula之前,然后选择一些深奥的excel错误。