Excel不断将我的日期更改为美国格式。我有一个用户表单,用户在其中输入日期。例如,我输入01/11/2018
(2018年11月1日)。然后,我将此值放入单元格中,但是它会自动更改为11/01/2018
或2018年1月11日。
到目前为止,我已经尝试使用以下代码强制其使用英国格式;
SHT_data_TASKS.Cells(1 + tableRows, 8).NumberFormat = "dd/mm/yyyy;@"
SHT_data_TASKS.Cells(1 + tableRows, 8) = form_addTask_Date.Value
但这没有帮助。我也尝试过使用CDate函数,但还是没有运气。我检查了计算机的区域设置,它们对于英国都是正确的。
如果我右键单击放置日期的单元格,然后选择“格式”,则显示为已被格式化为英国日期!我不确定是什么原因导致了它的改变。
答案 0 :(得分:0)
这是我在包含英国日期的控件上使用的日期代码:
Private Sub UserForm_Initialize()
Me.txtDate = Format(Date, "dd-mmm-yyyy")
End Sub
在日期控制的AfterUpdate
事件上:
Private Sub txtDate_AfterUpdate()
With Me
FormatDate .txtDate
End With
End Sub
在常规模块中:
Public Sub FormatDate(ctrl As Control)
Dim dDate As Date
Dim IsDate As Boolean
If Replace(ctrl.Value, " ", "") <> "" Then
On Error Resume Next
dDate = CDate(ctrl.Value)
IsDate = (Err.Number = 0)
Err.Clear
On Error GoTo 0
If IsDate Then
ctrl.Value = Format(ctrl.Value, "dd-mmm-yyyy")
ctrl.BackColor = RGB(255, 255, 255)
Else
ctrl.BackColor = RGB(255, 0, 0)
End If
End If
End Sub
然后使用以下代码将其传输到工作表(在“保存”按钮上):
shtRawData.Cells(rLastCell.Row, CLng(lCol)) = CDate(ctrl.Value)
答案 1 :(得分:0)
当您要将日期写到工作表上时:
isdate()
将其存储为日期(或等效日期)Range.FormulaLocal
而不是value
或value2
进行分配。未经测试,但是
Range("A1").FormulaLocal = #10/31/2018#