当我输入月份名称时,以下代码有效。但是,我需要它来找到当前月份的文件夹,避免每个月更新代码。我对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
答案 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所示。