Цикл VBA не работает?

У меня есть книга под названием «Мастер» с двумя листами:

Лист 1 введите описание изображения здесь

Этот лист имеет число «18» в ячейке I8, как показано выше.

Затем у меня есть лист 2

Больше на этом листе в одно мгновение. введите описание изображения здесь

Я пытаюсь обратиться к планировщику моей работы 2017, sheet1.

Это выглядит следующим образом:

введите описание изображения здесь

Если значение в столбце A в рабочей книге планировщика совпадает с значением в I8 на главном компьютере, тогда я хочу прокрутить каждую строку в моей книге планировщика и скопировать определенные значения в основную книгу (лист 2).

введите описание изображения здесь

Вот мой код:

Option Explicit Sub LoadWeekAnnouncementsFromPlanner() Dim WB As Workbook Dim WB2 As Workbook Dim i As Long Dim i2 As Long Dim j As Long Dim LastRow As Long Dim ws As Worksheet 'Open Planner 'On Error Resume Next Set WB = Workbooks("2017 Planner.xlsx") On Error GoTo 0 If WB Is Nothing Then 'open workbook if not open Set WB = Workbooks.Open("G:\BUYING\Food Specials\2. Planning\1. Planning\1. Planner\8. 2017\2017 Planner.xlsx", xlUpdateLinksNever, True, Password:="samples") End If 'Open PhoneBook 'On Error Resume Next 'On Error GoTo 0 ' ======= Edit #2 , also for DEBUG ====== With WB.Worksheets(1) LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row j = 2 For i = 1 To LastRow ' === For DEBUG ONLY === Debug.Print CInt(ThisWorkbook.Worksheets(1).Range("I8").Value) If CInt(ThisWorkbook.Worksheets(1).Range("I8").Value) = .Range("A" & i).Value Then ' check if Week No equals the value in "A1" ThisWorkbook.Worksheets(2).Range("A" & j).Value = .Range("A" & i).Value ThisWorkbook.Worksheets(2).Range("B" & j).Value = .Range("N" & i).Value ThisWorkbook.Worksheets(2).Range("H" & j).Value = .Range("K" & i).Value ThisWorkbook.Worksheets(2).Range("I" & j).Value = .Range("L" & i).Value ThisWorkbook.Worksheets(2).Range("J" & j).Value = .Range("M" & i).Value ThisWorkbook.Worksheets(2).Range("K" & j).Value = .Range("G" & i).Value ThisWorkbook.Worksheets(2).Range("L" & j).Value = .Range("O" & i).Value ThisWorkbook.Worksheets(2).Range("M" & j).Value = .Range("P" & i).Value ThisWorkbook.Worksheets(2).Range("N" & j).Value = .Range("W" & i).Value ThisWorkbook.Worksheets(2).Range("O" & j).Value = .Range("Z" & i).Value End If Next i End With End Sub 

В моей книге планировщика есть как 100 строк с номером «18», и до того, как мой код перечислил все эти данные в мою основную книгу на листе 2.

Теперь все, что я получаю, – это одно значение, а не все. Так что моя петля не работает по какой-то причине, и я не знаю почему.

Это работало в пятницу, и теперь это не так, и я не могу это объяснить.

Может кто-нибудь покажет мне, что я делаю неправильно?

РЕДАКТИРОВАТЬ:

Я думаю, что это связано с моей дефрагментацией LastRow.

Результатом, который я получаю, является «спрайт ноль». Смотри ниже:

введите описание изображения здесь

И последняя строка в моем планировщике с номером «18» также является спрайтом ноль.

введите описание изображения здесь

Поэтому по какой-то причине мой код получает только последнее событие. Почему это?

Проблема с вложенными блоками

см. http://www.ozgrid.com/forum/showthread.php?t=145717

Изменить: после комментария OP, решение заключалось в том, чтобы добавить j=j+1 потому что строка, в которой выполняется запись макроса, никогда не менялась.

Interesting Posts

Программно удалить источник данных Mailmerge с помощью VB.NET

VBA: для расчета ежемесячных возвратов из дневных значений

Выбор следующего элемента Slicer в VBA

Автоматическое закрытие всплывающего окна excel с использованием VBscript

count количество строк в excel с использованием c #

Формат пользовательского номера в Excel

Заполнять вверх и вниз ячейки в нескольких столбцах на основе условия

Ошибка сброса функции VBA после функции VBA Clear

Отремонтированные записи: информация соты из листа, созданного с нуля

Excel условное форматирование – выделение ячеек на основе значения в верхней части каждого столбца

Excel Power Query – добавочная загрузка из запроса и добавление даты

Низкая производительность, улучшающая выбор слайсера Excel с использованием VBA

Каков наилучший способ динамического использования Excel из c #

если ячейка имеет указанное значение, тогда вызов указанного дополнительного ключа вызывает другой

Как связать дату (мм / дд / гггг) со временем (чч: мм: сс) с помощью VBA

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