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