Тип несовместим между датами - PullRequest
1 голос
/ 25 февраля 2020

Я пытаюсь сравнить сегодняшнюю дату с датами в планировании, чтобы выделить текущую задачу.

Sub tasks()
    Dim task As Range
    Dim i As Integer
    Dim debut As Date, fin As Date, today As Date
    today = (Date)
    With Worksheets("Gantt")
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            debut = (.Cells(i, 2).Value)
            fin = (.Cells(i, 3).Value)
            Set task = Range(.Cells(i, 1), .Cells(i, 5))
            If (debut <= today) & (today <= fin) Then
            'task.Interior.ColorIndex = 8
                Debug.Print "today = " & today
                Debug.Print "debut = " & debut
                Debug.Print "fin = " & fin
            End If
        Next i
    End With
End Sub

Мой код выдает ошибку incompatibility type в моем операторе if. Я пытался привести все мои даты к двойному типу с CBdl, но это выдает мне одну и ту же ошибку независимо. Даты на листе - это «длинные даты», и я написал их, например, как 20/02/2020.

Кто-нибудь знает, что мне не хватает? Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 25 февраля 2020

Вы используете & вместо And, который пытается объединить две даты вместо логического сравнения двух операций.

Заменить на

If (debut <= today) And (today <= fin) Then
0 голосов
/ 25 февраля 2020

Найдено две ошибки в двух нижних строках.

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

If (debut <= today) & (today <= fin) Then

Ниже приведен исправленный код:

Sub tasks()

    Dim task As Range
    Dim i As Integer
    Dim debut As Date, fin As Date, today As Date
    today = (Date)
    With Worksheets("Gantt")
        For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
            debut = (.Cells(i, 2).Value)
            fin = (.Cells(i, 3).Value)
            Set task = Range(.Cells(i, 1), .Cells(i, 5))
            If (debut <= today) And (today <= fin) Then
            'task.Interior.ColorIndex = 8
                Debug.Print "today = " & today
                Debug.Print "debut = " & debut
                Debug.Print "fin = " & fin
            End If
        Next i
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...