excel - DateAdd 函数在 VBA 中显示 1900 年的日期

标签 excel vba dateadd

我遇到了这个奇怪的问题,我真的不明白发生了什么。
我有下面的代码
VBA代码:

Dim tddate As Date
Dim expdate As String
Dim inputdate As String

tddate = Worksheets("Sheet3").Range("pdate").Value
inputdate = TextBox1.Value
expdate = Format(DateAdd("m", 18, tddate), "dd/mm/yyyy")

If inputdate = expdate Then
Range("A1").Value = TextBox1.Value
Else
MsgBox "Input the correct date"
Cancel = True
End If
它将用户输入与必须在文本框中的日期进行比较......直到昨天它工作完美,完全没有问题
今天我继续我的 excel 项目的工作 If I Debug.Print expdate 变量它显示的日期是 30/06/1901 !!!!!!
PS。如果我现在 Debug.Print 它显示正确的日期
PS.2。我正在使用 Excel 2019,但我在另一台使用 Excel 2016 的笔记本电脑上尝试了工作簿并显示相同的内容。 (第二次尝试是因为我昨天改变了我的内存——每次在我的系统中都是正确的——我以为我搞砸了)

最佳答案

尝试使用真实的日期值,而不是文本:

Dim tddate      As Date
Dim expdate     As Date
Dim inputdate   As Date

tddate = Worksheets("Sheet3").Range("pdate").Value
If IsDate(TextBox1.Value) Then
    inputdate = DateValue(TextBox1.Value)
    expdate = DateAdd("m", 18, tddate)
    If DateDiff("d", inputdate, expdate) = 0 Then
        Range("A1").Value = inputdate
    Else
        Cancel = True
    End If
Else
    Cancel = True
End If

If Cancel Then
    MsgBox "Input the correct date"
End If

关于excel - DateAdd 函数在 VBA 中显示 1900 年的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71304604/

相关文章:

MySQL date_add,日期子查询

mysql - 在日期列中添加天数并生成新列?

c - 找出 XLL 自定义工作表函数被调用的名称

arrays - 从 VBA 字符串数组中获取第 n 个元素

Excel 如果在命名范围内,则删除行

excel - 获得得分最高的前五名学生

sql-server - 如何在当前日期上添加天数?

java - 如何将单元格合并到poi中的最后一行

java - 将我的 double 单元格变成 double 数组

java - 使用 Applet 和 Apache POI 打开 Excel 文件