我在这里和整个网站上查了一下我发现的一些解决方案,包括将Now
作为CDate
投射,但没有任何效果。
在Win7上使用带有Excel 2010的VBA编辑器。
即使帮助部分中的示例代码抛出此错误,Month()
函数中使用的日期也会以数字形式显式初始化。
在这两种情况下,我尝试在CDate()
参数上使用month()
,但它不起作用。在我的原始代码中,我也尝试使用Date
代替Now
,也没有效果。
这是我的原始代码,它在If条件上转换错误:
Function SetNextTaskNb()
Dim seqNb As String
seqNb = ThisWorkbook.Worksheets("Persistent").Range("A" & 1).Value
Dim Nbs() As String
Nbs = Split(seqNb, ".", 2)
Dim month, currentNb, nextNb As Integer
month = CInt(Nbs(0))
currentNb = CInt(Nbs(1))
If month(Now) = month Then
nextNb = currentNb + 1
Else
nextNb = 1
End If
ThisWorkbook.Worksheets("Persistent").Range("A" & 1).Value = currentMonth + "." + nextNb
ThisWorkbook.Worksheets("Sheet1").Range("A" & 1).Value = currentMonth + "." + nextNb
End Function
以下是VBA编辑器帮助部分中的示例代码,在没有修改的情况下进行复制粘贴会在第一个Debug.Print
上引发相同的错误。它甚至不会显示它。
Dim MyDate, MyMonth
MyDate = #2/12/1969# ' Assign a date.
Debug.Print "month is " & month(MyDate)
Debug.Print "rgMonth.Cells(i, j).Value is " & rgMonth.Cells(i, j).Value
MyMonth = month(CDate(MyDate)) ' MyMonth contains 2.
我知道我应该给Month()函数一个数字形式的日期,并返回一个Integer。我尝试了我能想到的一切。
以下是来自帮助的代码:
答案 0 :(得分:6)
您正在使用月作为函数的名称和变量的名称................为变量指定一个不同的名称。