繁体   English   中英

ActiveCell.FormulaR1C1上的VBA运行时错误1004

[英]VBA Run-Time Error 1004 on ActiveCell.FormulaR1C1

Excel单元格中的公式“ = DATEVALUE(IF(ISERROR(INT(LEFT(MID(D2,FIND(“ /”,D2)+ 1,LEN(D2)),FIND(“ /”,MID(D2,FIND( “ /”,D2)+ 1,LEN(D2))-1)))),DAY(D2),INT(LEFT(MID(D2,FIND(“ /”,D2)+ 1,LEN(D2)) ,FIND(“ /”,MID(D2,FIND(“ /”,D2)+ 1,LEN(D2)))-1))))&“ /”&IF(MID(D2,LEN(D2)-4, 1)=“ /”,INT(LEFT(D2,FIND(“ /”,D2)-1)),MONTH(D2))&“ /”&IF(MID(D2,LEN(D2)-4,1) =“ /”,INT(RIGHT(D2,4)),YEAR(D2)))“工作正常。

下面的VBA代码是使用Excel 2007中的“ Record-Macro”选项自动生成的,目的是实用地导出上述公式。

但是,在运行VBA相同的代码时,出现运行时错误'1004'。 请帮助纠正此问题。 VBA代码:

Sub Macro()

' Macro2 Macro

    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=DATEVALUE(IF(ISERROR(INT(LEFT(MID(RC[1],FIND(""/"",RC[1])+1,LEN(RC[1])),FIND(""/"",MID(RC[1],FIND(""/"",RC[1])+1,LEN(RC[1])))-1))),DAY(RC[1]),INT(LEFT(MID(RC[1],FIND(""/"",RC[1])+1,LEN(RC[1])),FIND(""/"",MID(RC[1],FIND(""/"",RC[1])+1,LEN(RC[1])))-1)))&""/""&IF(MID(RC[1],LEN(RC[1])-4,1)=""/"",INT(LEFT(RC[1],FIND(""/"",RC[1])-1)),MONTH(RC[1]))&""/""&IF(MID(RC[1],LEN(" & _
        ",1)=""/"",INT(RIGHT(RC[1],4)),YEAR(RC[1])))"
    Selection.AutoFill Destination:=Range("C2:C3239")
    Range("C2:C3239").Select

End Sub

当您将其放入VBA中时,您丢失了该公式的最后D2)-4部分,从而使该公式无效。

Sub Macro()

' Macro2 Macro

Range("C2").Select
ActiveCell.FormulaR1C1 = _
    "=DATEVALUE(IF(ISERROR(INT(LEFT(MID(RC[1],FIND(""/"",RC[1])+1,LEN(RC[1])),FIND(""/"",MID(RC[1],FIND(""/"",RC[1])+1,LEN(RC[1])))-1))),DAY(RC[1]),INT(LEFT(MID(RC[1],FIND(""/"",RC[1])+1,LEN(RC[1])),FIND(""/"",MID(RC[1],FIND(""/"",RC[1])+1,LEN(RC[1])))-1)))&""/""&IF(MID(RC[1],LEN(RC[1])-4,1)=""/"",INT(LEFT(RC[1],FIND(""/"",RC[1])-1)),MONTH(RC[1]))&""/""&IF(MID(RC[1],LEN(" & _
    "RC[1])-4,1)=""/"",INT(RIGHT(RC[1],4)),YEAR(RC[1])))"
Selection.AutoFill Destination:=Range("C2:C3239")
Range("C2:C3239").Select
End Sub

FWIW,我通过在插入您在Excel中表示有效的公式的同时记录宏来解决错误,然后直观地将该宏与您使用的宏进行比较。 很明显,差异在哪里,因为它是第二条语句继续行的开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM