。公式生成运行时错误1004 – 适用于所有其他string

一切工作,除了最后一个kcFormula 。 它返回一个1004 Runtime Application error 。 我想也许我把kcFormula声明为一个string,它太大了,或者我不知道我在做什么:D

这是问题陈述:

Sheets("AML").Range(myRNG).Formula = kcFormula

 Sub SharePoint_FormatADDcolS() Dim myRNG As String Dim lastROW As Integer Dim matchFormula As String Dim kcFormula As String matchFormula = "=IF(ISNA(Table3[[#This Row],[Status]]=Table3[[#This Row],[Last Status]])," matchFormula = matchFormula & """ Status Changed""" matchFormula = matchFormula & "," & "IF(Table3[[#This Row],[Status]]<>Table3[[#This Row],[Last Status]]," matchFormula = matchFormula & """ Status Changed""" & "," & """Status Unchanged""" & "))" kcFormula = "=IF(OR(Table3[[#This Row],[Status]]=" & """Rejected""" & "," & "Table3[[#This Row],[Status]] =" & """Completed""" & "," & "Table3[[#This Row],[Status]]=" & """Not Implemented""" & ")," & """ """ & ",INDEX('AMLLAST'!$1:$1048576,MATCH(Table3[[#This Row],[ID]],'AMLLAST'!$E:$E,0),11)" lastROW = ActiveSheet.UsedRange.Rows.Count With Sheets("AML") .ListObjects(1).Name = "Table3" End With Sheets("AML (2)").Name = "AMLLAST" With Sheets("AML") Range("J1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Range("J1").Select ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _ IconFileName:=False Sheets("AML").Range("C1").EntireColumn.Insert Sheets("AML").Range("C1").EntireColumn.Insert Sheets("AML").Range("C1") = "Last Status" Sheets("AML").Range("D1") = "Match" Sheets("AML").Range("K1").EntireColumn.Insert Sheets("AML").Range("K1") = "BITOOL - Rating" myRNG = "C2:" & "C" & lastROW Sheets("AML").Range(myRNG).NumberFormat = "General" Sheets("AML").Range(myRNG).Formula = "=INDEX('AMLLAST'!$1:$1048576,MATCH(Table3[[#This Row],[ID]],'AMLLAST'!$E:$E,0),2)" myRNG = "D2:" & "D" & lastROW Sheets("AML").Range(myRNG).NumberFormat = "General" Sheets("AML").Range(myRNG).Formula = matchFormula myRNG = "K2:" & "K" & lastROW Sheets("AML").Range(myRNG).NumberFormat = "General" Sheets("AML").Range(myRNG).Formula = kcFormula End With End Sub 

你最后错过了一个括号…..我没有在Excel中testing过,但我猜这就是问题所在。

请注意,对于这样的问题,解决它们的最简单方法是debug.print公式,然后将其粘贴到实际的单元格中。 这样,Excel会给你更清晰的错误信息,你可以解决。

通过摆脱所有的连接,可以提高最后一条语句的可读性:

 kcFormula = "=IF( OR(Table3[[#This Row],[Status]] = ""Rejected"", Table3[[#This Row],[Status]] = ""Completed"", Table3[[#This Row],[Status]] = ""Not Implemented"" ), "" "", INDEX('AMLLAST'!$1:$1048576, MATCH(Table3[[#This Row],[ID]],'AMLLAST'!$E:$E,0 ) ,11 )" ) <---- this guy is missing! (put him inside the closing " mark 

而且,在input那些深度embedded的,复杂的IF语句时,我通常会将它们粘贴到记事本中,并将它们分成多行。 当你这样做的时候,你会注意到你错过了最后的结尾) ,正如OpiesDad指出的那样。

给他的解决scheme的功劳,我只是想指出几个技巧来解决这个问题,不适合发表评论。