excel - 从输入框获取日期

标签 excel vba date

我正在通过按钮处理 Excel VBA。点击按钮后,会弹出一个输入框,询问用户下个月是什么。输入新月份的日期将创建一个以月份和年份命名的新工作簿。如果用户正确输入日期,它就可以正常工作。但是,如果用户通过取消或输入其他数据而不是日期的方式在输入框中输入任何内容。将弹出错误代码 13:类型不匹配。看起来 DATE 变量不能为空。

这是我的代码:

Sub NewMonth_button()

Dim Date_Today As Date
Dim nwFilename As String

Date_Today = InputBox("Please enter YEAR-Month")

nwFilename = "Daily Journal_" & Year(Date_Today) & "_" & Month(Date_Today)

Worksheets(Array("list", "data", "Fill", "Archive>")).Copy
ActiveWorkbook.SaveAs filename:=ThisWorkbook.Path & Application.PathSeparator & nwFilename

End Sub

我尝试过类似的方法:

If Date_Today = "" then
exit sub
end if

就在 Date_Today = InputBox("请输入 YEAR-Month") 行之后 但它不起作用。

有什么方法可以避免这些吗? 非常感谢。

最佳答案

像这样:

Sub NewMonth_button()

    Dim Date_Today As Date
    Dim Date_Text  As String
    Dim nwFilename As String

    Date_Text = InputBox("Please enter YEAR-Month")
    If IsDate(Date_Text & "-01") Then
        Date_Today = DateValue(Date_Text & "-01")
        nwFilename = "Daily Journal_" & Format(Date_Today, "yyyy_mm")

        Worksheets(Array("list", "data", "Fill", "Archive>")).Copy
        ActiveWorkbook.SaveAs filename:=ThisWorkbook.Path & Application.PathSeparator & nwFilename
    End If

End Sub

关于excel - 从输入框获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77286567/

相关文章:

excel - excel vba(函数或子)可以返回 "Data Validation >> List >> Source"的数据列表吗?

vba - 测试 VBA 字典的 Item 是否等于给定值,而不将 key 和 item 添加到字典中

java - 使用 Calender 或 java 中的任何类查找上个月名称

javascript - 使用 JavaScript 确定一个月中的天数的最佳方法是什么?

sql - 如何从 PostgreSQL 中的另一个表生成日期范围 + 计算更早的日期?

Vba:根据文本选择多行

c# - 如何在 C# 中加载带密码的 Excel 文件

vba - Excel 三重(多个)VLOOKUP 以及两个工作表上的串联 VLOOKUP 值

excel - 如果单元格包含的日期小于今天,则设置单元格格式

vba - 定义工作表名称取决于变量