2011-10-02 2 views
13

고려 선언 xavg의 기본 값은 무엇VBA 변수/배열 기본값

Dim x As Double 
Dim avg(1 To 10) As Double 

?

테스트를 통해 x이 0으로 초기화되었다고 말하고 싶습니다. 마찬가지로, avg의 모든 요소가 0으로 초기화되었다고 말하고 싶습니다.

그러나 이것에 의존하는 코드를 작성할 수 있습니까? 아니면 기본 초기화 값이 실제로 불확정합니까?

답변

14

데이터 형식을 지정하지만 초기화 프로그램을 지정하지 않으면 Visual Basic에서 변수를 해당 데이터 형식의 기본값으로 초기화합니다. 모든 데이터 형식은 0입니다.

매크로를 실행하면 모든 변수가 값으로 초기화됩니다. A 숫자 변수는 0으로 초기화되고 가변 길이 문자열은 길이가 0 인 문자열 ("")로 초기화되고 은 ASCII 코드 0으로 채워집니다. 변형 변수는 으로 초기화됩니다. 빈 변수는 숫자 컨텍스트 에서 0으로 표시되고 문자열 컨텍스트에서 길이가 0 인 문자열 ("")로 표시됩니다.

Ref.

+0

정말 정확합니다. 그러나 동적 배열을 사용하는 경우 요소를 초기화하지 않고 명시 적으로 설정하기 전에 arr (0)을 참조하면 오류가 반환됩니다. – dmogle

+1

제쳐두고, 나는 (그래서 검색하여) Excel VBA의 선언에서 이니셜 라이저를 지정할 수 없다고 확신합니다. Ref를 이용해 주셔서 감사합니다. 그것은''x '가 0이라는 것을 의심하지 않습니다. 고정 배열의 모든 요소도 0으로 초기화되는 경우가 있습니까? 실제로 동적 배열은 선언시 초기화되지 않고 할당 된 배열이 아니라는 것을 발견했습니다. 고정 배열 선언이 같은 방식으로 동작하지 않도록하고 싶었습니다. –

+0

@Prashant, 왜 변수에 시계를 추가하고 직접 테스트하지 않습니까? – Reafidy

1

예. VBA에서 기본값으로 지정되어있는 숫자 유형을 0으로 초기화해야합니다.

그러나 걱정할 필요가 있고 시작 값이 중요하다면 내 추천은 값 0을 사용자에게 명시 적으로 할당하는 것입니다 (정말로 필요하지는 않지만). 당신이 무슨 일을하는지 확실히 명확하지 않기 때문에

4

당신 암시 적으로 주어진 데이터 유형의 기본값에 따라 다르지만 쓰기 코드는 그 혼란을 줄 수있는, 항상 해야 당신을 의미하지 않는다 수 코드를 읽는 다음 사람 (그리고 그 사람은 지금부터 1 년 후 일 수 있습니다).

변수에 초기 값을 명시 적으로 할당하면 잘못 될 수 없습니다. , 조금 더 복잡 배열 과정의

Dim x As Double: x = 0 

하지만, 일반적으로 코드에서 더 아래를 초기화하는 편리한 곳 : 당신이 원하는 경우에, 당신은 선언과 같은 줄에 그렇게 할 수 당신은 어쨌든 그들을 횡단하고 있습니다.