如何在Excel中用户公司后面的代码中强制日期格式为YYYY-MM-DD
在工作表“Verzendlijst_PostNL”的B2单元格中,日期将通过文本框输入:txtDate,然后使用filldown直到下一行的数据。这工作正常,但我需要在Excel工作表行中强制将日期设置为YYYY-MM-DD。 我应该把什么代码放在哪里? 多谢各位如何在Excel中用户公司后面的代码中强制日期格式为YYYY-MM-DD,excel,date,Excel,Date,在工作表“Verzendlijst_PostNL”的B2单元格中,日期将通过文本框输入:txtDate,然后使用filldown直到下一行的数据。这工作正常,但我需要在Excel工作表行中强制将日期设置为YYYY-MM-DD。 我应该把什么代码放在哪里? 多谢各位 Private Sub cmdAdd_Click() Dim ws As Worksheet Dim LastRow As Long Set ws = Worksheets("Verzendlijst_PostNL") ws.Ran
Private Sub cmdAdd_Click()
Dim ws As Worksheet
Dim LastRow As Long
Set ws = Worksheets("Verzendlijst_PostNL")
ws.Range("B2") = txtDate.Value
ws.Range("J2") = txtDes.Value
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
Range("B2:B" & LastRow).FillDown
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
Range("J2:J" & LastRow).FillDown
Me.txtDate.Value = ""
Me.txtDes.Value = ""
Me.txtDate.SetFocus
End Sub
我在Excel文件中重新创建了您的问题,并提出了以下(有效)解决方案:
Option Explicit
Private Sub cmdAdd_Click()
Dim ws As Worksheet
Dim LastRow As Long
Set ws = ThisWorkbook.Worksheets("Verzendlijst_PostNL")
If IsDate(Me.txtDate.Value) Then
ws.Range("B2").Value = CDate(Me.txtDate.Value)
Else
ws.Range("B2").Value = Me.txtDate.Value
End If
If IsDate(Me.txtDes.Value) Then
ws.Range("J2").Value = CDate(Me.txtDes.Value)
Else
ws.Range("J2").Value = Me.txtDes.Value
End If
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Range("B2:B" & LastRow).FillDown
ws.Range("J2:J" & LastRow).FillDown
ws.Range("B2:B" & LastRow).NumberFormat = "YYYY-MM-DD"
ws.Range("J2:J" & LastRow).NumberFormat = "YYYY-MM-DD"
Me.txtDate.Value = ""
Me.txtDes.Value = ""
Me.txtDate.SetFocus
End Sub
注:
代码正在验证文本框
txtDate
和txtDesc
中是否存在可识别的日期。只有在这种情况下,VBA才会尝试将文本转换为实际日期。如果不是这样,VBA会将文本插入单元格中,并且不管日期格式如何,值都会显示为(无法识别的)文本。我在Excel文件中重新创建了您的问题,并提出了以下(有效的)解决方案:
Option Explicit
Private Sub cmdAdd_Click()
Dim ws As Worksheet
Dim LastRow As Long
Set ws = ThisWorkbook.Worksheets("Verzendlijst_PostNL")
If IsDate(Me.txtDate.Value) Then
ws.Range("B2").Value = CDate(Me.txtDate.Value)
Else
ws.Range("B2").Value = Me.txtDate.Value
End If
If IsDate(Me.txtDes.Value) Then
ws.Range("J2").Value = CDate(Me.txtDes.Value)
Else
ws.Range("J2").Value = Me.txtDes.Value
End If
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Range("B2:B" & LastRow).FillDown
ws.Range("J2:J" & LastRow).FillDown
ws.Range("B2:B" & LastRow).NumberFormat = "YYYY-MM-DD"
ws.Range("J2:J" & LastRow).NumberFormat = "YYYY-MM-DD"
Me.txtDate.Value = ""
Me.txtDes.Value = ""
Me.txtDate.SetFocus
End Sub
注:
代码正在验证文本框
txtDate
和txtDesc
中是否存在可识别的日期。只有在这种情况下,VBA才会尝试将文本转换为实际日期。如果不是这样的话,VBA会将文本插入单元格中,并且不管日期格式如何,值都会显示为(无法识别的)文本。可能是范围(“B2:B”和LastRow)。NumberFormat=“yyyy-mm-dd”
?如何范围(“B2:B”和LastRow)。NumberFormat=“yyy-mm-dd”
?@jeeed伟大的团队合作精神。你负责columnJ
,而我负责columnB
。当然,我慢了30秒。但话说回来。。。谁比你跑得快?@Ralph-如果你发布答案,包括。。。哪里原始问题的一部分。@Ruud van Deursen-所有这些都发生在Verzendlijst_PostNL工作表上吗?代码是否在Verzendlijst_PostNL工作表代码表上?您正在限定ws.Range(“B2”)
的父级,但不限定单元格(…
,范围(“B2:B”),…
等。可能是范围(“B2:B”和LastRow)。NumberFormat=“yyy-mm-dd”
?范围(“B2:B”和LastRow)如何?@团队合作非常出色。你在照顾columnJ
,而我的工作是在B列
。当然,我比你慢了30秒。但话说回来……谁比你快?@Ralph-如果你把原始问题的…where…部分写进去。@Ruud van Deursen-这一切都是在Verz上发生的吗endlijst_PostNL工作表?是否为Verzendlijst_PostNL工作表代码表上的代码?您正在限定ws.Range(“B2”)
的父级,但不限定单元格(…
,Range(“B2:B”),…
等等。亲爱的拉尔夫,你是最棒的。工作完美。非常感谢你,祝你度过愉快的一天。亲爱的拉尔夫,你是最棒的。工作完美。非常感谢你,祝你度过愉快的一天。