Условная установка значений словаря сценариев в Excel VBA - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть Master.xlsx.У меня есть две переменные startd и endd - которые определяют диапазон дат, который я должен хранить в своем словаре.

У меня также есть список праздников в отдельной рабочей таблицекоторый я пытаюсь убрать из диктата.

    Set hld = Sheet2.Range("A2:A7")
    ....
    ....
    Dim WDdict As New Scripting.dictionary
    For n = startd To endd:  WDdict(n) = 1:  Next
    For Each hd In hld
        If hd > 0 Then hd = DateValue(hd): If WDdict.Exists(hd) Then WDdict.Remove (hd)
    Next

«База» - это название одного из рабочих листов.На этом «базовом» листе есть два ключевых столбца - электронная почта и дата присоединения (DOJ)

    EmlsrcA = Application.Transpose(src.Sheets("Base").Range("A2:A" & rowsn))
    DojsrcA = Application.Transpose(src.Sheets("Base").Range("G2:G" & rowsn))

Что я хочу сделать

Если значение DOJ для каждой строкипосле / позже, чем startd (входной параметр), тогда я хочу удалить каждую дату между startd и DOJ из словаря.

Итак, я попробовал что-то вроде этого

For Each emls In EmlsrcA 'each line in email in base page

    Dim WDdictrs As New Scripting.dictionary
    For Each elm In WDdict: WDdictrs(elm) = 1: Next

    remove dates before doj
    dj = 0
    If DojsrcA(dj) > startd Then
        dj = dj + 1
        For n = startd To DojsrcA(dj):
            If WDdictrs.Exists(n) Then WDdictrs.Remove (n) Else WDdictrs(n) = 1
        Next
    End If

Выдаетошибка выхода за пределы допустимого диапазона в «If DojsrcA (dj)> startd Then».Что я делаю не так?

1 Ответ

0 голосов
/ 28 декабря 2018

DojsrcA - это базовый двухмерный массив вариантов из объекта Range.Ваша переменная dj = 0, поэтому она выходит за пределы диапазона, начиная с 1.

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