Чтобы вернуть true, если значение ячейки находится внутри массива, иначе вернуть false - PullRequest
1 голос
/ 01 июля 2019

Если я передаю dayVal и другую строку последовательности для работы, она должна вернуть True или False

Я пробовал оба не в состоянии разобраться.

Это мой код

Function IsWeekOff(ByVal weekDayVal As Variant, ByVal WorkingSequence As Variant) As Boolean
    Dim Mon_Fri, Sun_Thu, Thu_Mon, Tue_Sat As Variant
    Mon_Fri = Array("Mon", "Tue", "Wed", "Thu", "Fri")
    Sun_Thu = Array("Sun", "Mon", "Tue", "Wed", "Thu")
    Thu_Mon = Array("Thu", "Fri", "Sat", "Sun", "Mon")
    Tue_Sat = Array("Tue", "Wed", "Thu", "Fri", "Sat")

    Dim El1, El2, El3, El4 As Variant
    If WorkingSequence = Mon_Fri Then
        For Each El1 In Mon_Fri
          If El1 = weekDayVal Then
                IsWeekOff = True
                Exit Function
          End If
        Next El1      
    ElseIf WorkingSequence = Sun_Thu Then
        For Each El2 In Sun_Thu
          If El2 = weekDayVal Then
                IsWeekOff = True
                Exit Function
          End If
        Next El2
    ElseIf WorkingSequence = Thu_Mon Then
        For Each El3 In Thu_Mon
          If El3 = weekDayVal Then
                IsWeekOff = True
                 Exit Function
          End If
        Next El3
    ElseIf WorkingSequence = Tue_Sat Then
       For Each El4 In Tue_Sat
          If El4 = weekDayVal Then
                IsWeekOff = True
                 Exit Function
          End If
        Next El4
    End If
    IsWeekOff = False
End Function

Файл Excel

See Image for excel table

1 Ответ

0 голосов
/ 01 июля 2019

Проблема: Вы пропустили кавычки в своих утверждениях If:

В них должны быть кавычки при передаче строки из листа Excel.If WorkingSequence = "Mon_Fri"

Function IsWeekOff(ByVal weekDayVal As Variant, ByVal WorkingSequence As Variant) As Boolean

    Dim Mon_Fri, Sun_Thu, Thu_Mon, Tue_Sat As Variant
    Mon_Fri = Array("Mon", "Tue", "Wed", "Thu", "Fri")
    Sun_Thu = Array("Sun", "Mon", "Tue", "Wed", "Thu")
    Thu_Mon = Array("Thu", "Fri", "Sat", "Sun", "Mon")
    Tue_Sat = Array("Tue", "Wed", "Thu", "Fri", "Sat")

    Dim El1, El2, El3, El4 As Variant
    If WorkingSequence = "Mon_Fri" Then
        For Each El1 In Mon_Fri
          If El1 = weekDayVal Then
                IsWeekOff = True
                Exit Function
          End If
        Next El1
    ElseIf WorkingSequence = "Sun_Thu" Then
        For Each El2 In Sun_Thu
          If El2 = weekDayVal Then
                IsWeekOff = True
                Exit Function
          End If
        Next El2
    ElseIf WorkingSequence = "Thu_Mon" Then
        For Each El3 In Thu_Mon
          If El3 = weekDayVal Then
                IsWeekOff = True
                 Exit Function
          End If
        Next El3
    ElseIf WorkingSequence = "Tue_Sat" Then
       For Each El4 In Tue_Sat
          If El4 = weekDayVal Then
                IsWeekOff = True
                 Exit Function
          End If
        Next El4
    End If
    IsWeekOff = False


End Function

Результат:

enter image description here

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