如果有的话,这个月正确使用和替代

时间:2017-04-04 19:51:50

标签: excel vba syntax

当我输入月份名称时,以下代码有效。但是,我需要它来找到当前月份的文件夹,避免每个月更新代码。我对ThisMonth描述的使用在另一个宏中运行良好但在这里不起作用。我相信我错误地应用它。任何见解都表示赞赏。

Sub JoinPathParts()

    Dim pathParts(1 To 5) As String
    Dim path As String

    pathParts(1) = "H:"
    pathParts(2) = "Rejects"
    pathParts(3) = "2017"
    pathParts(4) = "" & ThisMonth & "\"""
    pathParts(5) = "FileName*.xlsx"

    path = Join(pathParts, "\")

    Application.Workbooks.Open (path)
    Call AddAsLastWorksheet


End Sub

2 个答案:

答案 0 :(得分:3)

ThisMonth是 NOT VB常量。你需要定义它。

由于您写道将MonthMonth替换为Month Name,我建议您在代码顶部附近尝试添加以下行:

Dim ThisMonth as String
ThisMonth = Format(Date, "mmm")

编辑:鉴于@MatsMug关于国际意识的评论,如果这是一个问题,您可以使用以下内容:

Dim ThisMonth As String, M As String
M = Application.International(xlMonthCode)
M = M & M & M
ThisMonth = Format(Date, M)

答案 1 :(得分:3)

ThisMonth可能是您的其他宏定义的函数或变量,并且它不能使用代码的原因是因为它是,它是&#39>未定义。

在每个模块的顶部添加:

Option Explicit

您的代码停止编译,VBA抱怨ThisMonth未定义。

我们不知道在您的其他宏中如何实现ThisMonth,但这可能是它:

pathParts(4) = "" & MonthName(Month(Now)) & "\"""

一种更可靠的方法是使用Format模块中的VBA.Strings函数来获取格式化的月份名称 - 如this answer所示。