excel - 规范化 VBA 中关于时间的日期

标签 excel vba date time integer

我知道这个问题已经讨论了很多——但实际上我还没有找到这个问题的最终答案。
我想从我的 VBA(Excel)脚本中的日期“删除”(或更确切地说是标准化)时间。例如。:

20.12.2017 15:16

应该转化为
20.12.2017 00:00

据我所知,作为 Format() 或 NumberFormat() 的函数只会改变外观/格式,但不会改变值本身。在我的情况下,有必要实际更改值,即从 43089,64(等于 20.12.2017 15:16)向下舍入到 43089,00(等于 20.12.2017 00:00)。
人们经常建议使用 int(),其他人说这可能导致溢出,因为整数限制为 32767(似乎合法),你应该使用 CLng。但是当我改为应用 CLng 时,它会四舍五入到 43090,这不是我的目标。然后其他人再次建议在字符串中剪切日期或使用 CLng() 结合 floor() 或 rounddown()。

谁能告诉我我是否可以实际使用 int() 或者这是否会造成溢出?否则,什么是安全且高效的解决方案?

我感谢您的帮助!

最佳答案

Int()返回与传递相同的数据类型,因此您不会导致溢出。 Fix()不过,这种用法更好,因为它处理负数的方式(例如,纪元日期之前的日期)。在负数的情况下,Int()返回小于输入的下一个数字,具有减去一天的效果。 Fix()简单地删除浮点类型的非整数部分:

Debug.Print Int(-1.5)   'returns -2
Debug.Print Fix(-1.5)   'returns -1

关于excel - 规范化 VBA 中关于时间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51582057/

相关文章:

Excel VBA 导出到 Excel - 删除连接

vba - 如何从另一个 Excel 实例引用工作簿

java - 从随机字符串中获取日期模式

excel - 错误处理不工作 VBA

vba - 自动定义工作表名称

excel - 如何在运行时 VBA 显示 UDF 的工具提示?

excel - 动态生成数据验证列表的年份数组Excel VBA

java - 将日历添加到数据库后更改日期

语言环境的 Java 日期格式

带有 .offSet() 的 VBA 运行计时器错误 1004