Description: When convertiong a date literal, such as #25-12-1995#, CInt() function throws an exception. This applies to Basic and VBA modes Steps to Reproduce: 1. Run the sample codes from the attached document Actual Results: Basic Error # is raised Expected Results: Date literals should be converted/truncated to Integers without problem. Reproducible: Always User Profile Reset: No Additional Info: Exception is circumvented when removing the trailing dash '#' in date literals.
Hi Alain, I think you forgot to attach a sample document 😊
Ignore above comments and consider the following Basic routine: Sub Date2Integer() Const DAY_ONE = #1899-12-30# ' = 1 MAX_DATE = DateAdd("d", DAY_ONE, 2^15-2) ' #1989-09-16# Print CInt(#1989-09-16) , CInt(#09/16/1989) , MAX_DATE ' 1964 , 0 , #1989-09-16# Print CInt(#1989-09-16#), CInt(#09/16/1989#) ' 32767 , 32767 Print CLng(#1989-09-16) , CLng(#09/16/1989) , MAX_DATE ' 1964 , 0 , #1989-09-16# End Sub - Erroneous date literals should raise Error #5 at runtime OR BETTER - Be trapped at compile time When provided with valid date literals CInt() returns a valid 1-32667 number, otherwise raises an overflow when dates are above MAX_DATE. Note: DateAdd() intercepts such invalid date syntax with Error #5
I get a warning dialog with 1964 0 15.09.1989 Setting to NEW. Arch Linux 64-bit Version: 7.5.0.0.alpha1+ (X86_64) / LibreOffice Community Build ID: 705b2924a14841883b4a8cac549f7af326d7a185 CPU threads: 8; OS: Linux 6.0; UI render: default; VCL: kf5 (cairo+xcb) Locale: fi-FI (fi_FI.UTF-8); UI: en-US Calc: threaded Jumbo Built on 8 December 2022