手动输入后的日期值不匹配

时间:2017-06-22 06:34:13

标签: excel-vba vba excel

通过输入框我想定义单元格中使用的日期。

Sub Refresh()

Dim myValue As Variant

myValue = InputBox("Give me a starting date")
Workbooks.Open Filename:="Y:\ 3300.xls"
Range("A1").Value = myValue
ActiveWorkbook.Close SaveChanges:=True

End Sub

奇怪的是,有时给定的日期是正确的,有时会反转(通过重新打开给定的文件来检查)。我尝试了以下日期:

30/01/17是正确的 14/05/17是正确的 04/02/17被撤销到02/04/17
08/09/17逆转至09/08/17
10/05/17逆转到05/10/17
05/10/17逆转到10/05/17

单元格格式符合上述条件(dd / mm / yy),即使我更改它并相应地调整输入,行为也会保持不变

1 个答案:

答案 0 :(得分:1)

Excel无法将您的输入识别为日期。这只是输入到输入框的文本,当您将其添加到工作表时,Excel会尝试将其格式化。通过添加CDATE,它会将输入的值转换为实际日期 - 如果我错了,我相信有人会在这里纠正我,但它似乎会使用您的本地设置进行转换。

我看到的另一个潜在问题是,您只是看着ActiveWorkbook,而这可能不是刚刚打开的那个。下面的代码将工作簿添加到变量中,这样您就可以确保始终查看正确的书籍和该书中的正确表格。

Sub Refresh()

    Dim myValue As Date
    Dim wrkBk As Workbook

    myValue = InputBox("Give me a starting date")
    Set wrkBk = Workbooks.Open("Y:\ 3300.xls")
    wrkBk.Worksheets("Sheet1").Range("A1") = CDate(myValue)
    wrkBk.Close SaveChanges:=True

End Sub