2017-12-30 50 views
1

Excel 셀의 수식 "= DATEVALUE (IF (ISERROR (INT (왼쪽/중간, D2, FIND ("/ ", D2) +1, LEN (D2)), DAY (D2), INT (LEFT (MID (D2, FIND()), FIND ("/", "/", D2) +1, LEN (D2)) -)))) & "/ "& 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)) " 완벽하게 작동합니다.ActiveCell.FormulaR1C1에서 VBA 런타임 오류 1004

아래의 VBA 코드는 Excel 2007의 "레코드 매크로"옵션을 사용하여 자동으로 생성되어 위의 수식을 실용적으로 유도합니다.

그러나 VBA 동일한 코드를 실행하는 동안 런타임 오류 '1004'가 표시됩니다. 이 문제를 해결하려면 도움을 받으십시오. VBA 코드 : 당신은 따라서 공식이 유효하고, 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(" & _ 
     ",1)=""/"",INT(RIGHT(RC[1],4)),YEAR(RC[1])))" 
    Selection.AutoFill Destination:=Range("C2:C3239") 
    Range("C2:C3239").Select 

End Sub 

답변

0

.

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는 I은 Excel에서 근무 상기 화학식 삽입하고 시각적으로 사용 된 것과 그 매크로 비교하면서 매크로 기록하여 오류를했다. 차이점이 두 번째 진술 연속 선의 맨 처음 이었기 때문에 그 위치가 상당히 분명했습니다.