excel-vba运行时错误“1004”

以下是我的代码

Range("M2").Select Selection.FormulaArray = _ "=IF(AND(RC8<=R1C,RC9>=EOMONTH(R1C,0)),INDEX(Planned!R2C:R100C,MATCH(1,(RC3=Planned!R2C3:R100C3)*(RC10=Planned!R2C10:R100C10)*(RC12=Planned!R2C12:R100C12),0)),ROUND((MAX(R1C[1]-MAX(RC8,R1C),0)-MAX(R1C[1]-MAX(RC9,R1C),0))*INDEX(Planned!R2C:R100C,MATCH(1,(RC3=Planned!R2C3:R100C3)*(RC10=Planned!R2C10:R100C10)*(RC12=Planned!R2C12:R100C12),0))/DAY(EOMONTH(R1C,0)),0))" 

当我尝试运行macros,它给我下面的错误

在这里输入图像说明

对此有何想法?

你能保存公式的部分variables吗? 然后调用公式数组中的variables? 为了保存字符? 所以简单地拆分方程。

举个例子:

 var1 = DAY(EOMONTH(R1C,0)) 

然后在你的公式中replace它。 做这个很容易被一个variablesreplace的几个部分。

不知道你在各个领域有什么数据,做下面的工作?

 ActiveSheet.Range("M2").Activate With Selection Selection.FormulaArray = _ "=IF(AND(RC8<=R1C,RC9>=EOMONTH(R1C,0)),INDEX(Planned!R2C:R100C,MATCH(1, (RC3=Planned!R2C3:R100C3)*(RC10=Planned!R2C10:R100C10)* (RC12=Planned!R2C12:R100C12),0)),ROUND((MAX(R1C[1]-MAX(RC8,R1C),0)- MAX(R1C[1]-MAX(RC9,R1C),0))*INDEX(Planned!R2C:R100C,MATCH(1, (RC3=Planned!R2C3:R100C3)*(RC10=Planned!R2C10:R100C10)* (RC12=Planned!R2C12:R100C12),0))/DAY(EOMONTH(R1C,0)),0))" End With 

请改变这个:(SendKeys方法模拟您将在活动窗口中手动input的击键)

 Range("M2").Select Selection.Formula = _ "=IF(AND(RC8<=R1C,RC9>=EOMONTH(R1C,0)),INDEX(Planned!R2C:R100C,MATCH(1,(RC3=Planned!R2C3:R100C3)*(RC10=Planned!R2C10:R100C10)*(RC12=Planned!R2C12:R100C12),0)),ROUND((MAX(R1C[1]-MAX(RC8,R1C),0)-MAX(R1C[1]-MAX(RC9,R1C),0))*INDEX(Planned!R2C:R100C,MATCH(1,(RC3=Planned!R2C3:R100C3)*(RC10=Planned!R2C10:R100C10)*(RC12=Planned!R2C12:R100C12),0))/DAY(EOMONTH(R1C,0)),0))" SendKeys "{F2}" SendKeys "^+{ENTER}"