2017-12-30 51 views
1

Excelセル内の数式"= DATEVALUE(IF(ISERROR INT(LEFT)MID(D2、FIND("/"、D2)+1、LEN(D2) )、DAY(D2)、INT(LEFT(MID(D2、FIND(1))、FIND(「/」、 FIND( "/"、MID(D2、FIND( "/"、D2)+1、LEN(D2))))))& "/ (D2、FIND( "/"、D2)-1))、MONTH(D2))& "/"、 "&" IF(MID(D2、LEN(D2)-4,1) & IF(MID(D2、LEN(D2)-4,1)= "/"、INT(RIGHT(D2,4))、YEAR(D2)) "は完璧に機能します。ActiveCell.FormulaR1C1でのVBAランタイムエラー1004

以下のVBAコードはExcel 2007の "レコードマクロ"オプションを使用して自動的に生成され、上記の式を実用的に導出します。

しかし、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 

答えて

0

あなたは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で働いていた、と述べた式を挿入しながら、マクロを記録することによって、エラーを働きました。相違点が2番目の文の継続行の始まりであったのは、かなり明白でした。

関連する問題