2012-01-19 2 views
11

나는 어떻게 든 새로운 통합 문서의 IDE에 다음을 입력하여 엑셀 2010 충돌 할 수 있어요 여기 정말 무슨 일이 있었는지 :엑셀 2010 재정의하십시오 유지 충돌

private sub foo 
    dim v(1 to N, 1 to M) 
    ... 
    M = New_Value 
    redim preserve v(,1 to M) ' seemed reasonable ... then CRASH !!! 

그것은 VBA (즉 당신이 1 차원을 변경하도록 허용하지 않는)을 보존 ReDim을 2 차원의 1 PARAM에 명시하는 것이 필요하다는 재밌 네요. 그러나 간단한 구문 오류에 대한 벌칙이 심각한 경우에는 재미 있지 않습니다. 이것은 합리적으로 깨끗한 환경 (IDE에는 빈 프로젝트 창을 시작으로 추가 기능이 설치되지 않음)을 갖춘 IT 부서이며 "redim v (, 1에서 M)"는 이웃의 컴퓨터도 충돌 시켰습니다.

다른 사람들과이 문제가 발생하면 궁금합니다. 버그를 고정 할 때까지 통합 문서를 낭비하는 데 시간을 낭비하는 경우를 대비하여 게시하고 있습니다.

+0

즉. 샘플 # 2를 새로운 Excel 모듈에 붙여 넣으면 모든 것이 떨어져 버렸습니다! 어쩌면 우리 중 충분한 사람이 이것을 보냈다면 누군가가 고칠 것입니다. :) – Fionnuala

+0

예, 저 역시 나를 추락 시켰습니다. Excel 2010. – Reafidy

+0

너무 추락했습니다. Excel 2010 –

답변

2

크래시는 첫 번째 차원의 누락 또는 더 좋은 표현으로 인해 nLastDimension - 1에 누락이 발생하고 다음 차원에서 TO 키워드를 사용합니다.

나는 당신의 작은 샘플을 맡게과 충돌하지 만들려고 : P

Option Explicit 'Just wanted to make the Interpreter more picky 

Private Sub test() 
    'Go through some basic declaration 
    Dim v() As Variant 
    Dim M As Integer 
    Dim New_Value As Integer 

    ReDim v(2, 2) 'No Problem 
    ReDim Preserve v(1, 1 To M) ' No Problem 
    ReDim Preserve v(1 To M) ' No Problem 
    ReDim Preserve v(,400) 'Compile Error 

    'Crash on this 
    'ReDim Preserve v(,1 To M) 'BOOM!!! 
    'and this: 
    'ReDim Preserve v(,1 To 2) 'BOOM!!! 
    'and this: 
    'ReDim Preserve v(1 to 5,,1 To 2) 'BOOM!!! 


End Sub 

결론을, 코드의 아무도를 "붐"라인 전에 가을을 쿠션됩니다. 컴파일러 오류가 나는 이해할 수 있지만, VBA는

ReDim myVar(,x TO y) 
나는 오피스 2007

차기 및 싱긋 웃음에 대한

사용

을 처리하도록 코딩되지 않으며, 또한 다음과 같은 장소에서이 코드를 시도 :

  1. 액세스 '97 (CRASH)
  2. Visual Basic의 5 IDE (CRASH)
  3. BASIC 싸다 멘토 OpenOffice Calc. 이 먼저 :

이 충돌하지 않았고 나는 다음과 같은 두 개의 컴파일러 오류를 받았다 (아래 참조) 그런 다음이 enter image description here

: 재미

enter image description here

+0

VBA가 언제 오류를 낳았습니까? tpascale의 글에서 그는 "... 내가 버그를 고정 할 때까지 워크 북을 다시 만들 때 낭비하는 시간."이라고 말합니다. Excel 2003에서는 오류가있는 줄을 입력 할 때 return 키를 누를 때마다 (1) 또는 이전에 올바른 줄에서 첫 번째 차원을 제거한 후 위로, 아래로 또는 마우스로 줄을 옮길 때 붐 (booms)합니다. tpascale의 도움 없이도 Excel을 처음 시도 할 때 Excel을 다운시킨 다음 변경 사항을 다시 입력하려고했을 때 내가 알았을 것입니다. Excel 2007과 2010이 다른가요? –

+0

@TonyDallimore 모든 충돌 시나리오에서 1과 2에서 발생합니다. 또한 가져 오기에서 충돌 코드 가져 오기를 시도하고 Office 충돌이 발생했습니다. 나는 이처럼 극적인 작업 손실을 초래 한 tpascale의 시나리오에 대해 확신하지 못합니다. – ray

+1

명확히하기 위해 시간 낭비가 있었고 일은 없었습니다. 나는 충돌에 대한 작업을 잃지 않을 정도로 충분히 자주 저장하지만, 옛날에 비대해진 wb 충돌은 일반적인 경우 였고, 나에게 가르쳐 주신 배상은 모든 IDE 모듈을 내보내고 셀 복사본을 사용하여 처음부터 wb를 다시 만들었지 만 시트 사본은 사용하지 않았다. 이 연습이 2010 년에 취소 될 수 있는지 여부는 알 수 없지만 몇 가지 충돌이 발생했을 때이를 해결 방법으로 시도했습니다. 시간 낭비입니다. – tpascale

관련 문제