【问题标题】:Textbox date (TODAY) "DD/MM/YYYY "changes when entering to cell "DD/MM/YYYY"文本框日期(今天)“DD/MM/YYYY”在输入单元格“DD/MM/YYYY”时发生变化
【发布时间】:2021-08-22 10:17:37
【问题描述】:

当我放入我需要的数据时。我有一个包含今天日期的文本框,以及何时将数据传输到我的表格。日期更改。 例如: 表格中的日期:2021 年 4 月 6 日 2021 年 7 月 4 日 表中日期:06/04/2021 2021年4月6日

所以,我不明白为什么它改变的不是格式而是日期。

Private Sub userForm_Activate()

TextBox10.Text = Format(Now(), "dd/mm/yyyy")

End Sub



Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("OportunidadesemAberto")
Dim le As Long
le = sh.Range("A" & sh.Rows.Count).End(xlUp).Row + 1 
le = [Counta(OportunidadesemAberto!B:B)] 
With sh
.Cells(le + 1, "P").Value = Me.TextBox10.Value
End With 
End Sub

【问题讨论】:

  • 您必须知道从文本框中获取的日期是一个字符串。之前应用的格式无关紧要... Excel 会根据区域设置对其进行转换。如果您的区域设置没有以“dd/mm/yyyy”格式显示日期,Excel 猜测并且如果月份数低于 12,它可能会出错。您必须事先将字符串转换为所需的日期格式...文本框中的日期是否与“04/06/2021”完全一样?我的意思是,日期分隔符是斜杠(“/”)?
  • 解释得很好。是的,分隔符是“/”,我应该改变它吗? @FaneDuru
  • 没有。请查看我发布的代码。我首先尝试演示,然后展示如何使用来自 Date...的文本框字符串...
  • 你测试我发布的代码了吗?如果是,日期应该是正确的。如果您需要其他格式,现在可以正确格式化。如果是这种情况,我可以添加一个新行来更改 NumberFormat 属性...我修改了代码以格式化(真实)复制日期...

标签: excel vba date


【解决方案1】:

请看下一个测试Sub

Sub dateFromTextBox()
   Dim strDate As String, arrD
   strDate = "04/06/2021"
   arrD = Split(strDate, "/")
   ActiveCell.value = DateSerial(CLng(arrD(2)), CLng(arrD(1)), CLng(arrD(0)))
End Sub

接收日期的代码行应转换为:

arrD = Split(Me.TextBox10.Value, "/")
With sh.Cells(le + 1, "P")
   .Value = DateSerial(CLng(arrD(2)), CLng(arrD(1)), CLng(arrD(0)))
   .NumberFormat = "dd/mm/yyyy"
End with

如果日期分隔符不同,请使用已有的...

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多