간단한 대답은 입니다. 기본값은입니다.
다음 결과는 예시 :
debug.Print day(0)
30
이유는 무엇입니까? VBA 달력의 Day(0)
은 날짜가 30/12/1899
이므로 다음에 의해 설명 : 당신이 당신의 모듈의 상단에 Option Explicit
쓰기하지 않는 한, VBA 사용의 첫 번째 점에서 (Variant
유형으로) 당신이 자발적으로 변수를 만들 수 있습니다
debug.Print format(Cdate(0), "dd/mm/yyyy")
30/12/1899
.
변수가 생성되었지만 설정되지 않은 경우 변수는 '기본값'으로 설정됩니다. 샘플 기본값 :
Long
--- 0
Date
, Integer
을 포함한 다른 수치에 대해 (동일 Byte
, Double
등VBA의 허용 형 시스템에서 0
강제 변환 할 수 있습니다)
Boolean
--- False
()
Variant
---도) 0
강제 변환 할 수 있습니다 Empty
(
String
--- Zero-Length-String ("")
(이 실제로, 는 0
에 강제 할 수 없다, 당신은) Day("")
를 인쇄하려고하면
Any Object
--- 오류가 발생합니다 Nothing
,536,
따라서 Debug.Print Day(Var)
및 Var
을 숫자 데이터 유형 또는 부울 또는 변형 (또는 처음에는 선언하지 않은 문자)이라고 쓰면 Day(0)
으로 강제 변환되며 위의 결과는 30
입니다. 문제의 특정 상황에서
:
VBA이 선언되지 않은 변수로 ow
인식하므로 그것을 생성 (및 Variant
데이터 형식으로 초기화한다) 및 Day()
로 전달. Variant이므로 초기 값은 Empty
이며이 값은 0
으로 강제 변환되어 Day(0)
이되며 30
을 반환합니다.
출처
2016-06-06 15:52:06
Kaz
어쩌면 설명하겠습니까? https://social.msdn.microsoft.com/Forums/office/en-US/f1eef5fe-ef5e-4ab6-9d92-0998d3fa6e14/what-is-story-behind-december-30-1899-as-base-date? forum = accessdev – tjb1