Несоответствие типа броска функции месяца в примере кода из файла справки VBA

Я проверил здесь и во всем Интернете и нашел несколько решений, которые я пробовал, в том числе преобразование Now в CDate, но ничего не работает.

Использование редактора VBA с Excel 2010 на Win7.

Даже пример кода из раздела справки выдает эту ошибку, а дата, используемая в функции 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() дату в числовой форме, и что она возвращает целое число. Я пробовал все, что мог придумать.

Вот доказательство того, что это код из справки:

Несоответствие типов в примере кода


person EplusL    schedule 20.11.2013    source источник


Ответы (1)


вы используете Month и как имя функции, и как имя переменной... дайте переменной другое имя.

person Gary's Student    schedule 20.11.2013
comment
Право на. Не используйте функции или любые зарезервированные имена в качестве переменных, это может привести к катастрофе. - person nutsch; 21.11.2013
comment
Благодарю вас! Я упоминал, что я очень новичок в VBA? Я чувствую себя глупо прямо сейчас. - person EplusL; 21.11.2013
comment
Не чувствуйте себя глупо... как и в C или C++, в VBA есть свои маленькие ловушки! - person Gary's Student; 21.11.2013