programing

VBA 날짜(정수)

sourcejob 2023. 4. 24. 23:09
반응형

VBA 날짜(정수)

기본 정수를 구할 수 있는 방법이 있나요?DateVBA의 함수? Excel이 메모리에 저장한 정수를 일수로 기술하는 것을 말합니다(시간을 포함하면 부동일 수 있습니다.저는 정수 부분에만 관심이 있어요.그것에는 다른 기능이 있나요?

예를 들어 오늘()의 경우 40877을 돌려받고 싶습니다.

날짜가 VB(A)의 정수가 아니라 Double입니다.

날짜 값을 다음에 전달하면 얻을 수 있습니다.CDbl().

CDbl(Now())      ' 40877.8052662037 

매뉴얼에서 다음 항목을 참조하십시오.

1900년 날짜 제도

1900년 날짜 체계에서 지원되는 첫 번째 날은 1900년 1월 1일입니다.날짜를 입력하면 날짜가 1900년 1월 1일의 경과 일수를 나타내는 일련 번호로 변환됩니다.예를 들어 1998년 7월 5일을 입력하면 Excel은 날짜를 일련 번호 35981로 변환합니다.

1900년대 시스템에서는40877.805...1900년 1월 1일(2011년 11월 29일) 이후 40,876일, 1일(~19:19시) 중 ~80.5%를 나타냅니다.Excel에는 1904 기반 시스템 설정이 있으며, 사용 시 번호가 지워집니다(워크북별 설정).

정수 부분을 가져오려면

Int(CDbl(Now())) ' 40877

그 결과, 소수점 이하가 없는 2배(예: 무엇)Floor()다른 언어에서도 가능합니다).

사용.CLng()또는Round()정오 이후에 호출하면 "미래의 하루"가 반환되는 반올림 결과가 됩니다.

그냥 사용하다CLng(Date).

를 사용해야 합니다.Long것은 아니다.Integer이 경우 현재 날짜 값은 32767보다 커집니다.

Public SUB test()
    Dim mdate As Date
    mdate = now()
    MsgBox (Round(CDbl(mdate), 0))
End SUB

mdate 및 Now()와 같은 날짜 문자열에 벨로우 코드 예를 사용할 수 있습니다.또한 에이징과 같이 두 날짜 사이의 차이를 계산할 수도 있습니다.

Public Sub test(mdate As String)
    Dim toDay As String
    mdate = Round(CDbl(CDate(mdate)), 0)
    toDay = Round(CDbl(Now()), 0)
    Dim Aging as String
    Aging = toDay - mdate
    MsgBox ("So aging is -" & Aging & vbCr & "from the date - " & _
    Format(mdate, "dd-mm-yyyy")) & " to " & Format(toDay, "dd-mm-yyyy"))
End Sub

NB: 사용중CDate날짜 문자열을 유효 날짜로 변환합니다.

Office 2007에서 사용하고 있습니다:)

언급URL : https://stackoverflow.com/questions/8330838/vba-date-as-integer

반응형