VBA循环不工作?

我有一张名为Master的工作簿,里面有两张纸:

表1 在这里输入图像说明

如上所示,此工作表在单元格I8中的数值为“18”。

接下来我有我的工作表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中的主工作簿。

现在我所得到的是一个价值,而不是全部。 所以我的循环不工作,不pipe是什么原因,我不知道为什么。

这是星期五工作,现在不是,我不能解释。

请有人能告诉我我做错了什么?

编辑:

我认为这与我的LastRow定义有关。

我得到的结果是“精灵零”。 见下文:

在这里输入图像说明

我的计划编号为18的最后一行也是精灵零。

在这里输入图像说明

所以出于某种原因,我的代码只能得到最后一次出现。 为什么是这样?

嵌套With块的问题

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

编辑:在OP的评论之后,解决scheme是添加j=j+1因为macros写入的行从未改变。