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写入的行从未改变。