条件满足后,代码仍然循环

在下面的代码中,即使条件满足,循环也保持循环。 当我一行一行地运行它并开始运行循环时,我可以看到单元格select从J300开始的位置,我可以看到select向下移动列,但是当它到达满足条件的单元格时,该select不会抵消了,但代码继续循环,它不会到下一行。 我做错了什么,我能做些什么来改善? 谢谢你的帮助。

Sub RollForwardDataImport() Dim rcell5, rcell6, rcell7, rcell8, rcell9 As Long rcell8 = 0 rcell5 = Range("F2").Value rcell9 = Range("F2").Value Workbooks.Open "\\Inventory\CA-2016.xlsx" Worksheets("Total Year").Activate Range("J300").Select Do While Selection.Value <> recell5 If Selection.Value = rcell5 Then ActiveCell.Offset(0, 0).Select Else: ActiveCell.Offset(1, 0).Select End If Loop ActiveCell.Offset(0, -2).Select rcell6 = Selection.Value ActiveCell.Offset(0, -4).Select rcell7 = Selection.Value rcell8 = rcell6 + rcell7 + rcell8 Workbooks("Import.xlsm").Activate Range("H20").Select ActiveCell.Value = rcell8 Workbooks("CA-2016.xlsx").Close SaveChanges:=False End Sub 

这是你的代码的一个调整版本。 请注意,它避免使用.Select / .Activate并通过范围使用循环来查找您的值。

我强烈build议使用F8来逐行查看代码是如何工作的。

 Option Explicit Sub RollForwardDataImport() Dim rcell5 As Date, rcell6 As Long, rcell7 As Long, rcell8 As Long, rcell9 As String rcell8 = 0 rcell5 = 11/1/2016 'Range("F2").Value rcell9 = Range("F2").Value Workbooks.Open "\\Inventory\CA-2016.xlsx" Dim myRng As Range, cel As Range With Worksheets("Total Year") Set myRng = Range("J300:J1000") 'change this to your need. May be farther than row 1000 For Each cel In myRng If cel.Value = rcell5 And Month(cel.Vlaue) = Month(rcell5) Then rcell6 = cel.Offset(0, -2).Value rcell7 = cel.Offset(0, -4).Value rcell8 = rcell6 + rcell7 + rcell8 rcell5 = rcell5 + Exit For Else rcell5 = cell.Offset(1,0).Value End If Next cel End With With Workbooks("Import.xlsm") .Range("H20").Value = rcell8 End With Workbooks("CA-2016.xlsx").Close SaveChanges:=False End Sub 

它应该像你想的那样工作,但我可能错过了一些东西。 如果是的话,让我知道。