gpt4 book ai didi

excel - 无法在 VBA、Excel 2012 中正确设置日期格式

转载 作者:行者123 更新时间:2023-12-03 00:03:51 25 4
gpt4 key购买 nike

我正在 Excel 2010 中编写一个 VBA 脚本,该脚本根据事件的日期从 MySQL 数据库中获取某些事件。数据库中的日期存储在“yyyy-mm-dd hh:mm:ss”中。我的用户将使用“从-到”日期范围来筛选他们感兴趣的事件。为了让他们更轻松,我为该范围使用两个日历控件 (mscal.ocx) - Calendar1 用于“从”,Calendar2 用于“到”。我编写了两个简单的子例程,以确保每次点击日历都会自动更新我从中获取查询字符串数据的单元格,如下所示:

Private Sub Calendar1_Click()

Dim date1, datetime1, time1 As Date

Cells(29, 10) = CDbl(Calendar1.Value)
Cells(29, 10).NumberFormat = "yyyy-mm-dd"
Cells(30, 10).NumberFormat = "hh:mm:ss"
Cells(31, 11).NumberFormat = "yyyy-mm-dd hh:mm:ss"

date1 = Cells(29, 10)
time1 = Cells(30, 10)
datetime1 = date1 & " " & time1
Cells(31, 10) = datetime1


Cells(29, 10).Select

End Sub

Private Sub Calendar2_Click()

Dim date2, datetime2, time2 As Date

Cells(29, 11) = CDbl(Calendar2.Value)
Cells(29, 11).NumberFormat = "yyyy-mm-dd"
Cells(30, 11).NumberFormat = "hh:mm:ss"
Cells(31, 11).NumberFormat = "yyyy-mm-dd hh:mm:ss"

date2 = Cells(29, 11)
time2 = Cells(30, 11)
datetime2 = date2 & " " & time2
Cells(31, 11) = datetime2


Cells(29, 11).Select
End Sub

而且,它几乎完成了我想要它做的事情,即更改日历控件给出的格式,即 dd/mm/yyyy 到 yyyy-mm-dd。是的,几乎,因为它仅在日期值介于 1 和 12 之间时才有效,然后我的日期时间单元格会正确显示为“yyyy-mm-dd hh:mm:ss”。对于 13 到 31 天的值,我的日期时间单元格不会格式化,而是显示为“dd/mm/yyyy hh:mm:ss”。

现在,值得注意的是,无论日期如何,单元格 29,10 和 29,11 始终具有正确的格式 (yyyy-mm-dd),问题出在单元格 31,11 和 31,10 上。

现在,当我双击单元格,让光标在其中闪烁并按 Enter 键时,将执行格式化并将格式更改为正确的格式(即使对于 13 到 31 之间的日期值)。然而,这样做的目的是尽可能自动化一切,所以这并不是真正的解决方案。如果需要,我可以附加该文件,因为我确实意识到它适用于某些值而不适用于其他值,这听起来有点荒谬。

请帮忙!

编辑::

好的,再次感谢您的快速回答,我检查了您的解决方案,有了它,我又回到了开头。使用

Private Sub CommandButton1_Click()

Dim date1, date2, datetime1, datetime2, time1, time2, time3 As Date

date1 = Cells(29, 10)
time1 = Cells(30, 10)
datetime1 = Format(date1, "dd/mm/yyyy") & " " & Format(time1, "hh:mm:ss")
Cells(31, 10) = datetime1

End Sub

效果很好,但仅当日期值从 1 到 12 时才有效,例如,对于单元格值

日期

2012-09-12

时间

15:00:00

答案如我所愿,即

日期时间

2012-09-12 15:00:00

但是一旦我将日期值设置为高于 12(即 13 到 31),它就会停止正常工作(是的,我知道这听起来有多荒谬),而我得到的结果是:

日期时间

13/09/2012 15:00:00

非常感谢任何建议...

最佳答案

我知道我太晚了,但我认为你需要区分月份 (MM) 和分钟 (mm)...所以试试这个...

Format(yourDateObj, "yyyy/MM/dd hh:mm:ss");

希望这有帮助..:)

关于excel - 无法在 VBA、Excel 2012 中正确设置日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com