【问题标题】:Excel - date - vba textbox to tableExcel - 日期 - vba 文本框到表格
【发布时间】:2021-02-05 13:45:45
【问题描述】:

我有下面的 vba 用于设置今天日期的用户表单文本框。现在,当数据输入到我的产品列表表中的表格中时,日期会被重新格式化。

Private Sub UserForm_Initialize()
txt_date.Value = Format(Date, "d/m/yyyy")
End Sub

所以当数据被添加到工作表中时,它会变成 m/d/yyyy。

【问题讨论】:

  • 我不明白为什么 d 变成了 m?

标签: excel vba date excel-2010


【解决方案1】:

VBA 中使用的数据类型 + 回写工作表的方式将影响 Excel 解释数据的方式。看看其他例子:

Sub TestDate()
    Dim datestr As String, dateDate As Date
    
    datestr = "11/05/2021"
    dateDate = "11/05/2021"
    
    Sheet1.Range("A1").Value = CDate(datestr)
    Sheet1.Range("C1").Value = dateDate
    
    Sheet1.Range("A2").Value2 = CDate(datestr)
    Sheet1.Range("C2").Value2 = dateDate
End Sub

通过使用“value2”,您可以看到定义为“日期”类型的 var 的原始数据是如何发送回 Excel 的。恕我直言,这是最好的方法,但您必须直接在 Excel 工作表中设置正确的格式(选择列 > 单元格格式 > 日期 => 选择您想要的格式(您也可以在 vba 中设置,但我不这样做)认为这里不需要)。

祝你好运,

【讨论】:

  • 请加票。因为到目前为止我研究过这个问题在网上没有看到。这是一个有点独特的问题,但我仍然看不到明确的解决方案。
  • 我更新了我的答案。如果还不清楚,请告诉我
  • 好的,谢谢。但是您需要了解。我正在使用一个表单,它有一个名为 tex_date 的 textboc,只要打开表单就会显示今天的日期。这一切都很好。当用户单击添加按钮添加所有信息时,日期格式错误。我将在下面显示添加按钮中使​​用的 text_date 的代码:.Cells(iRow, 8).Value = Me.txt_date.Value
  • 在将 var(“字符串”类型)从表单粘贴到工作表之前将其转换为日期数据类型:.Cells(iRow, 8).Value2 = CDate(Me.txt_date)。我更新了答案。字符串类型的 var 现在将显示为“44327”(使用 value2 时)或在 Excel 表中查看时显示为日期(值)。
猜你喜欢
  • 2017-06-03
  • 1970-01-01
  • 2013-11-17
  • 2015-08-31
  • 2018-01-28
  • 1970-01-01
  • 2011-08-18
  • 2016-01-11
  • 1970-01-01
相关资源
最近更新 更多