2014-12-31 3 views
0

파일을 열 때마다 Excel 2007 통합 문서 파일이 계속 충돌하는 이유를 알 수 없습니다.통합 문서를 열면 Excel이 충돌 함

나는이 이벤트 처리기를 사용하여 문제를 일으키는 것이 확실합니다.

Option Explicit 

Private Sub Workbook_Open() 
    On Error Resume Next 
    CurrEntities = Array("Curr1,Ent1", "Curr2,Ent2", "Curr3,Ent3") 
End Sub 

CurrEntities는 별도의 모듈에서 공개로 선언됩니다.

Public CurrEntities() As Variant 

내가 라인 주석을 시도

- CurrEntities = 배열 ​​("Curr1, ENT1", "Curr2, Ent2를", "Curr3, Ent3")는 파일 문제없이 열 수 있습니다.

런타임 오류가 발생하지 않기 때문에 "Microsoft Excel이 작동을 멈췄다"라는 메시지가 나타나고 Excel이 종료됩니다.

배열 변수 선언을 놓치거나 위반 한 것이 있습니까?

+0

'Auto_Open()'과 같은 다른 코드가 있습니까? - 변수를 잘못 선언했지만 'On Error Resume Next'문을 사용하는 것은 매우 좋지 않습니다. 이러한 문제로 인해 응용 프로그램이 중단되지는 않습니다. –

+0

이벤트 외에도 다른 코드는 없습니다. 변수가 잘못 선언되면 런타임 오류가 표시되지만이 변수는 다른 역할을합니다. 따라서 Excel에서 "Microsoft Excel이 작동을 멈췄습니다."라는 오류가 발생합니다. – hymes

+0

코드를 새 Excel 2013 스프레드 시트에 넣었으며 오류없이 열립니다. 새 스프레드 시트에 코드를 복사하여 오류가 계속 발생하는지 확인할 수 있습니까? – DeanOC

답변

0
: ... 당신은 배열을 사용하고자하지 않는 한)

을,

Public CurrEntities As Variant 

모든 것을 확인해야한다 :

로 교체

위의 선언과 사용법에는 아무런 문제가 없습니다. 다른 파일을 만들고 테스트에 필요한 변수 만 사용하려고 할 때 문제를 발견하고 수정했습니다. 문제는 다른 변수가 잘못 선언 된 것입니다.

Public CoCodes("00123", "00456", "00789") As String 

위 코드는 코드에서 제거했으며 위 코드는 완벽하게 작동했습니다.

1
Public CurrEntities() As Variant 

의미 : Variant의 배열을 선언합니다.

Public CurrEntities() As Variant 

Sub Test() 
Dim i As Integer, j As Integer 
Dim curent As Variant 

CurrEntities = Array(Array("a", "b"), Array("c", "d")) 

For i = LBound(CurrEntities()) To UBound(CurrEntities) 
    curent = CurrEntities(i) 
    Debug.Print "---=== " & i & " ===---" 
    For j = LBound(curent) To UBound(curent) 
     Debug.Print curent(j) 
    Next 
Next 

End Sub 

건배,
마치에이

+0

예 배열을 원합니다. 귀하의 예제 CurrEntities = Array (Array ("a", "b"), Array ("c", "d"))하지만 같은 문제가 발생했습니다. – hymes

+0

@hymes, 새 통합 문서에서 사용해 보셨습니까? –

+0

공용 배열 변수를 사용하는 것과 같은 다른 파일이 있지만 낮은 버전 Excel 2003 및 그 작동 괜찮습니다 저장되었습니다. 이 파일은 더 많은 수의 행이 필요하고 제한된 행으로 인해 Excel 2003을 사용할 수 없어 Excel 2012로 저장됩니다. 이 문제와 관련이 있습니까? – hymes

관련 문제