Excel VBA, проверяя, на какой неделе список дат попадает в - PullRequest
1 голос
/ 25 марта 2020

Довольно неопытный пользователь VBA здесь ...

У меня есть список дат в диапазоне фиксированной длины и список дат начала недели в другом фиксированном диапазоне. Я хочу проверить, на какой неделе заканчивается каждая из дат.

Я начал с кода, но сейчас сталкиваюсь с проблемами, пытаясь вложить два цикла для каждого. Я думаю, что я заканчиваю, если и следующие заявления помещены неправильно. Я получаю ошибку «конец, если без блока, если». Мне также интересно, нужно ли вообще использовать два цикла for..each, чтобы сделать это.

Я только что поместил в печать строки yes и no, чтобы проверить, работает ли то, что я пытаюсь сделать - если оно делает go замену строк печати следующими этапами кода.

Любая помощь будет принята с благодарностью!

Спасибо

Dim due As Range
Dim dueDate As Date
Dim datecell As Range
Dim cashflow As Range
Dim cashcell As Range
Dim startweek As Date
Dim endweek As Date

Set due = Range("H21:H36")
Set cashflow = Range("N19:AT19")

    For Each cashcell In cashflow
        If IsDate(cashcell.Value) Then
            startweek = cashcell.Value
            endweek = cashcell.Offset(0, 2).Value

                For Each datecell In due

                If datecell >= startweek And datecell < endweek Then

                    Debug.Print "YES"
                    Else
                    Debug.Print "NO"
        End If
        End If
    Next datecell
    Next cashcell

End Sub

1 Ответ

0 голосов
/ 25 марта 2020

Позволяет сопоставить отступы ваших If и For l oop начала и конца:

Dim due As Range
Dim dueDate As Date
Dim datecell As Range
Dim cashflow As Range
Dim cashcell As Range
Dim startweek As Date
Dim endweek As Date

Set due = Range("H21:H36")
Set cashflow = Range("N19:AT19")

    For Each cashcell In cashflow
        If IsDate(cashcell.Value) Then
            startweek = cashcell.Value
            endweek = cashcell.Offset(0, 2).Value

                For Each datecell In due

                    If datecell >= startweek And datecell < endweek Then
                        Debug.Print "YES"
                    Else
                        Debug.Print "NO"
                    End If
        End If    ' <-- this If statement starts OUTSIDE the for loop
               Next datecell ' <-- This For loop starts INSIDE the If IsDate...
    Next cashcell

End Sub

Ваша проблема заключается в том, что вы не можете закончить предложение If IsDate... до того, как закончите ваше For Each datecell... предложение. Переключите две строки так, чтобы ваш оператор Next datecell выполнялся раньше, чем ваш End If, и ваш код должен выполнить

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