Может кто-нибудь помочь отладить этот Select Case - PullRequest
2 голосов
/ 03 октября 2019

Я занимался этим некоторое время, но безуспешно.

Не будет показано никакого другого результата, кроме первых двух случаев и последнего.

Я пробовал вариант меньше или равен.

        Dim DayLeft As Long
        DaysLeft = Me.Days.Value

        Select Case DaysLeft
            Case Is = 0
                MsgBox "Deadline due today!"
            Case Is < 0
                MsgBox "Deadline expired!"
            Case 90 To 31
                MsgBox "First notice " & Me.Days& " days until deadline!"
            Case 30 To 11
                MsgBox "Deadline due soon! " & Me.Days & " days until deadline!"
            Case Is <= 10
                MsgBox "Warning! " & Me.Days& " days until deadline!"
        End Select

Ответы [ 2 ]

5 голосов
/ 03 октября 2019

Из документации Select Case:

Ключевое слово To указывает диапазон значений. Если вы используете ключевое слово To, меньшее значение должно появиться до To.

Так что вам нужно

Case 31 to 90
...
Case 11 to 30
3 голосов
/ 03 октября 2019

Эти два недопустимы:

    Case 90 To 31
        MsgBox "First notice " & Me.Days& " days until deadline!"
    '...
    Case Is <= 10
        MsgBox "Warning! " & Me.Days& " days until deadline!"

Оператор & в Me.Days& интерпретируется как подсказка типа , а не как оператор конкатенации строк: ему нужен начальный пробел!

        Case 90 To 31
            MsgBox "First notice " & Me.Days & " days until deadline!"
        '...
        Case Is <= 10
            MsgBox "Warning! " & Me.Days & " days until deadline!"

Без этого пробел ваш код не будет компилироваться («Синтаксическая ошибка»).

Rubberduck поднимает два недостижимые предложения Case , которые недоступны по причине, выделенной в ответе BigBen .

Rubberduck inspections showing undeclared DaysLeft variable and unreachable Case blocks

Обратите внимание, что он также предупреждает о DaysLeftбудучи необъявленным и Option Explicit не указанным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...