月份函数抛出类型与VBA帮助文件中的示例代码不匹配

时间:2013-11-20 21:42:42

标签: excel vba excel-vba type-mismatch

我在这里和整个网站上查了一下我发现的一些解决方案,包括将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。我尝试了我能想到的一切。

以下是来自帮助的代码:

Type Mismatch on example code

1 个答案:

答案 0 :(得分:6)

您正在使用作为函数的名称和变量的名称................为变量指定一个不同的名称。