希望有人可以帮助我解决一个有趣的问题。使用以下Excel VBA代码更新工作表中具有日期的单元格。格式化为" DD / MM" YYYY"我的本地电脑也设置为此。
Dim SelectedDate As String
SelectedDate = "05/02/2018"
Sheets("CONTROL").Range("F36").NumberFormat = "dd/mm/yyyy"
Sheets("CONTROL").Range("F36").Value = Format(SelectedDate,"dd/mm/yyyy")
MsgBox Format(SelectedDate,"dd/mm/yyyy") ' Returns 05/02/2018 - Correct
MsgBox Sheets("CONTROL").Range("F36").Value ' Returns 02/05/2018 - Incorrect
任何帮助都会得到很大的帮助。
答案 0 :(得分:1)
很容易与Excel,VBA和日期格式混淆。在VBA和/或工作表中使用字符串而不是日期时更容易。如果将输出格式化为明确的日期,将更容易弄清楚发生了什么:例如:dd-mmm-yyyy。
May 2, 2018
所以代码的一个替代方案是:
Sub marine()
Dim SelectedDate As Date
SelectedDate = DateValue("05/02/2018") 'will convert to 5-Feb-2018
Sheets("CONTROL").Range("F36").NumberFormat = "dd/mm/yyyy"
Sheets("CONTROL").Range("F36").Value = SelectedDate
MsgBox Format(SelectedDate, "dd/mm/yyyy")
MsgBox format(Sheets("CONTROL").Range("F36").Value,"dd/mm/yyyy")
End Sub
答案 1 :(得分:0)
Value
属性只是定义了底层值的可视化表示方式,但它并没有改变底层值本身。而不是打印Text
属性,使用MsgBox Sheets("CONTROL").Range("F36").Text
(其中包含基础值的格式化表示):
Value
或者,如果您想坚持单元格的MsgBox Format(Sheets("CONTROL").Range("F36").Value, "dd/mm/yyyy")
属性,则必须按如下方式打印它:
σ rownum() > 0 and rownum() ≤ 1 τ price desc π price Serves
答案 2 :(得分:0)
步骤1:如果要在单元格中获取日期值,请选择NumberFormat属性的日期格式。
Sheets("CONTROL").Range("F36").NumberFormat = "dd/mm/yyyy"
步骤2:为避免将日期视为美国日期,请使用.FormulaLocal而不是.Value
Sheets("CONTROL").Range("F36").FormulaLocal = SelectedDate