У меня есть книги под названием Мастер 2 листов:Цикл VBA не работает?
Этот лист имеет числовое значение «18» в ячейке I8, как показано выше.
Следующая У меня есть лист 2
Больше на этом листе в данный момент.
Я стараюсь ссылаться на свою книгу 2017 планировщик, лист1.
Это выглядит, как показано ниже:
Если значение в колонке А в планировщик книге соответствует один в 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
Теперь все, что я получаю, - это одно значение, а не все. Так что моя петля не работает по какой-то причине, и я не знаю почему.
Это была рабочая пятница, и теперь это не так, и я не могу это объяснить.
Может кто-нибудь покажет мне, что я делаю неправильно?
EDIT:
Я думаю, что это что-то делать с моей LastRow Defintion.
В результате я получаю «спрайт ноль». Смотрите ниже:
И последняя строка на мой планировщик с номером «18» также спрайт нулю.
Так по какой-то причине, мой код только становится последним вхождением. Почему это?
Я не думаю, что вам нужно j2, просто продолжайте с j, когда вы возвращаетесь обратно к 2, возможно, используйте j2 для сравнения, но верните в j.Кроме того, есть те, у которых есть блоки, вы, похоже, не закрываете 1-й –