【问题标题】:Entering Date in Excel Sheet in VB. Date format changes if day is entered less than 12在 VBA 的 Excel 工作表中输入日期。如果输入的日期小于 12,日期格式会更改
【发布时间】:2017-07-09 20:27:34
【问题描述】:

这是我的代码:

'HomeP form has the excelapp, excelwb, excelws objects initialized.

HomeP.excelws.Range("C1", "C900000").NumberFormat = "dd-MMM-yyyy"
HomeP.excelws.Range("D1", "D900000").NumberFormat = "dd-MMM-yyyy"

我正在使用文本框进行输入。

HomeP.excelws.Cells(2, 3).Value = TextBox3.Text
HomeP.excelws.Cells(2, 4).Value = TextBox4.Text

[编辑]:现在的问题是,如果我输入 '23-12-2001' 那么它将在 excel 中存储为 '23-Dec-2001' 但如果我输入 '01-11-2001' 那么它将将其存储为“2001 年 1 月 11 日”。我不认为这与输入有关,而是当一天小于 12 时 Excel 如何解释它。我的系统日期格式是 dd-mm-yyyy。我想将 Excel 单元格中的日期格式设置为 'dd-MMM-yyyy'

【问题讨论】:

  • PS - 我正在使用 MS Excel 2010 和 Visual Studio 2015 进行编码。
  • 如果TextBox3.Text 表示的值应该是DateTime,则将该字符串解析为DateTime 变量并将该变量分配给Excel.Range.Value 属性。这样做可以消除所有歧义。
  • 试过了。仍然没有成功。查看下面答案中的评论。 :)
  • Tried it. Still no success. --> Dim timee As DateTime = TextBox3.Text Dim Formatt As String = "dd-MM-yyyy" Dim newdate = timee.ToString(Formatt) HomeP.excelws.Cells(2, 3).Value = newdate。那不是我建议的。您仍在分配一个字符串。试试看:HomeP.excelws.Cells(2, 3).Value = CDate(TextBox3.Text)
  • 非常感谢。这对我有用 :) 对不起,新手,我的错误没有正确地跟随你。

标签: vb.net


【解决方案1】:

感谢 TnTinMin 和 Aladein,问题已经解决。我创建了这个方法来获取所需格式的日期。

    Public Function GetDateProperly(ByVal tb As TextBox)
    Try
        Dim timee As DateTime = tb.Text
        Dim Formatt As String = "dd-MMM-yyyy"
        Dim newdate = timee.ToString(Formatt)
        Return CDate(newdate)
    Catch ex As System.InvalidCastException
    Catch ex As NullReferenceException
    End Try
    End Function

【讨论】:

    【解决方案2】:

    我觉得你可以试试:

            Dim Timee As DateTime = HomeP.excelws.Cells(2, 3).Value
            Dim Formatt As String = "dd-MM-yyyy"
            Dim newdate = Timee.ToString(Formatt)
            TextBox3.Text = newdate
    

    请告诉我它是否有效!

    【讨论】:

    • Dim timee As DateTime = TextBox3.Text Dim Formatt As String = "dd-MM-yyyy" Dim newdate = timee.ToString(Formatt) HomeP.excelws.Cells(2, 3).Value = newdate 试过了,还是一样。我认为问题不在于输入,而在于 excel 如何解释它。当输入的日期小于 12 时,它会自动更改格式。它不会将日期格式从 dd-mm-yyyy 更改为 mm-dd-yyyy。它以不同的方式解释它。例如。我输入的是 01/12/2017,它在 excel 中保存为 12-Jan-2017。
    猜你喜欢
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多