我正在尝试使用.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
答案 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错误。