2013-09-23 4 views
1

기본적으로 일부 열을 처리하고 액세스 2003 데이터베이스의 일부 교차 검사를 기반으로 결과를 출력하는 큰 매크로가 있습니다. 그것은 절대적으로 잘 작동합니다.메서드 '범위'_global 개체를 수행 할 때 아무 것도 수행하지 못했습니다.

그러나 최근 수정해야했습니다. 말 그대로 코드의 한 줄에서 '8'에서 '9'로 바뀌 었습니다. 하지만 다음에 실행했을 때 1004: Method 'Range' of object '_Global' failed 오류가 발생했습니다. Excel 2003은 재미있는 일입니다. 오류를 일으킬 수있는 문제가되는 코드 줄을 찾으려고 노력하면서 한동안이 머리를 몇 시간 동안 긁어 보았지만 아무 소용이 없었습니다. 나는 무엇이든 방아쇠를 당길 것을 기대하지 않았다.

원래의 매크로 (100 % 작동 확인)에서 시작하여 코드를 열고 방금 저장하면 '마지막으로 업데이트 된'메타 데이터가 업데이트됩니다. 저장을 반영하기 위해 아무 것도 변경되지 않았지만 열 때 오류가 다시 발생합니다.

마치 너무 약해서 매크로를 저장하면 깨지기 쉽습니다. 어떤 아이디어?

업데이트 : - 나는 다른 곳에서 위의 같은 작은 변화를했다 여기에 내가 처음에 문제

iOutputCols = 9 'this was changed to 9 from 8 
ReDim Preserve sOutputCols(iOutputCols) 
sOutputCols(0) = "Policy No" 
sOutputCols(1) = "Client" 
sOutputCols(2) = "Trans" 
sOutputCols(3) = "Effective Date" 
sOutputCols(4) = "ClosingRef" 
sOutputCols(5) = "Gross" 
sOutputCols(6) = "Comm" 
sOutputCols(7) = "Net Due" 
sOutputCols(8) = "Risk" 'this line was added 

원래 오류의 원인 반면, 특별하지 않는 것, 여기에 변경을 초래 것을 변경거야 코드 및 다른 모듈에서 한 번은 심지어 testval = "test" 같은 것을했고 심지어 그 여분의 줄이 오류를 생성합니다. 그것을 일으키는 가장 최소한의 방법? 간단히 열어 아무것도 변경하지 않고 저장하고 다음 사용시 오류가 발생합니다.

오류 형태의 일부는 완전히 다른 코드 섹션이 라인에서 발생

If strErr <> "" Then MsgBox strErr, vbInformation + vbOKOnly, "Action Error" 

Application.ScreenUpdating = True 'error occurs here, message box which shows me the error right above 

최종 서브

업데이트 2

에러 핸들링 분리는 오류가 발생 이 줄에

Case "> Send Next Period Reminder" 'error on line below 
     Call ReplaceText(wordApp, "[office_address]", Range("Address_" & Worksheets("UserParms").Range("F6").Value).Value) 'error this line 
     Call ReplaceText(wordApp, "[office_address2]", Range("Address2_" & Worksheets("UserParms").Range("F6").Value).Value) 
'more of the same replacetexts below 

상황에 따라, 이것은 opti Word 폴더 .dot 템플릿을 정적 폴더에서 가져 와서 시트 내에서 선택한 데이터에 따라 채 웁니다 (따라서 다음 텍스트를 바꿉니다). 이것은 다른 모듈에 있으며 이전에 한번도 손 대지 않았습니다.

+0

게시 된 코드가 많지 않아 "너무 광범위하고 애매하게"닫히기 전에 답변을 얻지 못할 가능성이 있습니다. 다른 것이 바뀌 었습니까? 라이브러리, 버전, ... 소프트웨어 업데이트? – Floris

+0

통합 문서에 오류를 유발할 수있는 UDF가 있습니까? 더 많은 정보가 없으면이 문제의 원인을 제시하는 것이 거의 불가능합니다. –

+0

@floris 그대로 변경되지 않습니다. 아무 것도 열지 않고 변경할 수 있습니다. 다음에 매크로를 실행하려고하면 오류가 발생합니다. – nclfrk799

답변

1

Range 메서드 호출을 올바르게 확인하십시오. 이 같은 라인을 가지고 :

Call ReplaceText(wordApp, "[office_address]", Range("Address_" & Worksheets("UserParms").Range("F6").Value).Value) 'error this line 
    Call ReplaceText(wordApp, "[office_address2]", Range("Address2_" & Worksheets("UserParms").Range("F6").Value).Value) 

가 명확하지 않을 수도 있지만, 경우가 있으며, 환경 적 코드 기반 Range 이러한 비정규 사용이 실패 할 수 있습니다. Range("Address...과 같은 참조를 yourTargetWS.Range("Address..과 같이 변경하십시오.

+0

오 세상에 ... 문제가 해결되었습니다! 범위 자체를 정규화해도 실제로 문제가 해결되지는 않았지만 솔루션을 통해 실제로 기본 워크 시트 참조가 비어있는 이유를 조사하게되었습니다. 왜 그런지 모르지만 저장하면 시트의 요소가 영구적으로 이동합니다 (3 열). F6의 모든 인스턴스를 I6으로 변경하면 해결됩니다. 왜 저축이 저축으로 옮겨 졌는지 아직도 모르겠지만, 지금은 해결 된 것이 행복합니다. 머리가 더 이상 찢어지지 않습니다! 촉매제를 제공해 주셔서 감사합니다! – nclfrk799