문자열을 셀에 출력하는 중 오류가 발생했습니다.

문자열을 셀에 출력하는 중 오류가 발생했습니다.

Excel 스프레드시트의 일부를 자동화하기 위해 vba 매크로를 사용하고 있습니다. 다음 줄에서는 런타임 오류 1004# 응용 프로그램 또는 개체 정의 오류가 계속 발생합니다.

Sheets("Material").Last.Offset(0, 1).Value = "=SUMIF(MainTable[0],AG12,MainTable[Cost])"

시계를 사용하면 방정식의 왼쪽이 적절한 셀을 참조하고 있다는 것을 알 수 있습니다. 셀에 기록되는 오른쪽 문자열에 오류가 있다고 가정합니다. 아마도 내 테이블 참조와 관련이 있다고 생각하고 있습니까? 나머지 수식은 문자열로 모두 잘 작성되었으며 테이블 참조가 포함되어 있지 않습니다.

답변1

런타임 오류가 발생했을 때 해당 셀에 대한 출력이 없었기 때문에 오류가 코드 내에 있다고 가정했습니다. 실제로 문제는 수식을 셀에 작성하고 "이 수식에 문제가 있습니다...."라는 팝업 창이 생성되는 경우 발생합니다. #NAME?, #VALUE!와 동일하지 않습니다. , #N/A 유형 오류입니다. 제 경우에는 코드에서 MainTable이라는 테이블에 범위를 설정했고 열 머리글 중 하나가 Effective Cost였습니다. 코드는 MainTable[Effective Cost]여야 하는 MainTable[Cost]를 참조하는 문자열로 수식을 설정합니다.

vba는 런타임 오류를 생성하고 하위는 중단되며 문제 문자열은 셀에 출력되지 않습니다. 다음 코드는 하위를 중지합니다. (추가 "("는 팝업 창 수식 오류를 발생시킵니다)

Range("A1").Value = "=Sum((B2:B4)"

다음 코드는 #NAME?을 제공하지만 중단 없이 작동합니다. A1 셀에 오류가 있습니다.

Range("A1").Value = "=Sum(PotatoSalad)"

또한 문자열 배열을 사용하여 빠른 테스트를 수행했습니다. 수식을 배열 내의 문자열에 저장하면 수식이 새로 고쳐질 때까지 평가되지 않으므로 코드가 중단되는 문제를 피할 수 있는 것 같습니다. 이 질문은 배열을 사용하여 수식을 셀에 덤프할 때 어떤 일이 발생하는지에 대해 자세히 설명합니다. 간단히 말해서 변형 배열을 사용하면 수식이 하위를 평가하고 중지하게 됩니다.https://stackoverflow.com/questions/19238844/strange-behavior-when-할당-a-vba-array-to-formulas-of-an-excel-range

다음 코드는 A1 셀이 강제로 다시 계산될 때까지 작동합니다.

Dim MyArray(0 to 0) as String MyArray(0) = "=Sum((B2:B4)" Range("A1").Value = MyArray()

동일한 배열을 변형으로 전달하면 런타임 오류가 발생합니다.

관련 정보