2017-02-20 6 views
1

У меня есть книги под названием Мастер 2 листов:Цикл VBA не работает?

Лист 1 enter image description here

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

Следующая У меня есть лист 2

Больше на этом листе в данный момент. enter image description here

Я стараюсь ссылаться на свою книгу 2017 планировщик, лист1.

Это выглядит, как показано ниже:

enter image description here

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

enter image description here

Вот мой код:

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.

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

enter image description here

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

enter image description here

Так по какой-то причине, мой код только становится последним вхождением. Почему это?

+0

Я не думаю, что вам нужно j2, просто продолжайте с j, когда вы возвращаетесь обратно к 2, возможно, используйте j2 для сравнения, но верните в j.Кроме того, есть те, у которых есть блоки, вы, похоже, не закрываете 1-й –

ответ

1

Уплотненный With блоки проблема

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

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

+0

. Я не уверен, что это проблема, так как если я удалю второй с помощью инструкции, тогда он все еще не правильно зацикливается – user7415328

+0

Что вы имеете в виду, удаляя второй с петлей? Я не понимаю ваше редактирование. Удалили ли вы весь код внутри или вы поместили WB2.Worksheets (3), где он должен быть? – JiheL

+0

посмотрите пожалуйста редактирование в вопросе. вы упомянули о вложенности с утверждениями и что это потенциально может быть причиной проблемы. Я просто упоминал в редактировании, что даже удаление дополнительного с помощью инструкции не улучшает ничего. – user7415328