Цикл «Для каждого» сохраняет циклическое прошлое «Если»

Я вытаскиваю электронные письма из Outlook в Excel с помощью VBA, сравнивая строку темы письма с диапазоном ячеек на другом листе. Я использую цикл For Each для достижения этого, но кажется, что, когда мое условие if выполнено, оно продолжается, поэтому оно не публикует результат, который я хочу. Кажется, что все ячейки в диапазоне, который я определил, пересекают, но тогда, даже когда он удовлетворяет моему условию if, он продолжает двигаться и заканчивается пустым.

Здесь я определяю свои диапазоны:

Dim rRng As Range, cel As Range Set rRng = Sheet2.Range("A2:A1218") 

Вот мой цикл For Each:

 oRow = 1 For iRow = 1 To Folder.Items.Count 'This loops through the inbox items. If VBA.DateValue(VBA.Now) - 1 <= VBA.DateValue(Folder.Items.Item(iRow).ReceivedTime) And VBA.DateValue(VBA.Now) > VBA.DateValue(Folder.Items.Item(iRow).ReceivedTime) Then 'This is checking that the emails were received within a certain time frame. For i = 0 To UBound(emails) If StrComp(Folder.Items.Item(iRow).SenderEmailAddress, emails(i)) = 0 Then 'This is checking that the emails are coming from specific address', emails is an array of accepted address'. For Each cel In rRng.Cells 'The beggining of my for each If InStr(1, Folder.Items.Item(iRow).Subject, cel.Text) > 0 Then 'checking to see if my the content from one of the cells in the range is part of the subject from the emails. ThisWorkbook.Sheets(1).Cells(oRow, 3) = cel.Value 'If it is part of the subject, take the value from the cell in the range where it matches, and put that value in another cell. End If Next cel oRow = oRow + 1 ThisWorkbook.Sheets(1).Cells(oRow, 1).Select ThisWorkbook.Sheets(1).Cells(oRow, 1) = Folder.Items.Item(iRow).ReceivedTime ThisWorkbook.Sheets(1).Cells(oRow, 5) = Folder.Items.Item(iRow).SenderEmailAddress ThisWorkbook.Sheets(1).Cells(oRow, 6) = Folder.Items.Item(iRow).Subject ThisWorkbook.Sheets(1).Cells(oRow, 7) = Folder.Items.Item(iRow).Body 'All of this above code is inserting data from the emails into cells. End If Next i End If Next iRow 

oRow – это счетчик для строк в листе excel.

iRow – это счетчик для элементов электронной почты.

Есть ли еще лучший подход?

EDIT2: догадываюсь немного …

 Dim itm As Object '<<< this makes your code more readable... Dim rw as range Set rw = ThisWorkbook.Sheets(1).Rows(1) For iRow = 1 To Folder.Items.Count Set itm = Folder.Items.Item(iRow) If Now - 1 <= itm.ReceivedTime Then For i = 0 To UBound(emails) If StrComp(itm.SenderEmailAddress, emails(i)) = 0 Then For Each cel In rRng.Cells If InStr(1, itm.Subject, cel.Text) > 0 Then rw.Cells(3).Value = cel.Value Exit For 'exit loop over cells End If 'subject match Next cel 'record the other details rw.Cells(1).Value = itm.ReceivedTime rw.Cells(5).Value = itm.SenderEmailAddress rw.Cells(6).Value = itm.Subject rw.Cells(7).Value = itm.Body Set rw = rw.Offset(1, 0) Exit For 'exit loop over emails End If 'email match Next i End If Next iRow 
  • Excel Formula INDEX MATCH несколько критериев поиска
  • Excel: CountIf Quandry
  • Как я могу использовать функции IF для расчета ежедневного дохода?
  • Excel: найдите текст в целом столбце для другого целого столбца и верните дату в этом столбце, если он существует
  • Excel Если диапазон дат отчета Поздний, OnTime и Open
  • Как использовать функции excel: If, Mod и Floor
  • Комбинация If Then и Do Loop (я думаю)
  • Excel смещение с формулой if
  • Извлечь текст из ячейки и определить как строку в vba
  • Чтение значения на Sheet1 из Sheet2 с помощью vlookup
  • SUMIF игнорирует отрицательное число
  • Interesting Posts

    Использование # в имени пути для гиперссылки в excel vba

    Как превратить Dataframe в массив с определенными спецификациями на Pandon Pandas

    Excel Имя ссылки на абсолютный лист, как сделать его относительным

    Как я могу прочитать диапазон («A5: B10») и поместить эти значения в фреймворк с использованием openpyxl

    Как получить значения с addons = значение без аддонов в excel.

    Время вывода с использованием xlswrite

    Разница во времени при использовании VBA Now vs. Now ()?

    Что такое рабочий лист. Цвета (строка, столбец).

    Сложная оценка формулы клетки не работает с использованием apache-poi

    быстрый способ чтения данных из огромного файла excel в java

    Как определить, в какую электронную книгу Excel была нажата?

    Оценить формулу массива

    Константы массива не работают должным образом в excel

    VBA Excel Копировать и вставить изменение количества строк со значениями и форматированием

    Преобразовать Sub в UDF (#VALUE!)

    Давайте будем гением компьютера.