VBA Excel比较工作表与嵌套对于

我想比较NBG_Data表的每一行与Comparison_Data表的每一行,所以我希望NBG_Data的每一行都与Comparison_Data表的所有行进行比较,然后转到下一行,直到它到达MAX_Row,问题是我无法嵌套For循环(我真的很想)所以我正在尝试做循环,但是当我开始的错误是“循环没有做”如果有人请告诉我我做了什么错误的Do循环或更好修改为所以我可以有一个嵌套的工作循环。

For Row = 2 To MAX_Row CompMonth = Worksheets(NBG_ComparisonDataWorksheetName).Cells(Row, SOP).Value CompMonth = DatePart("m", CompMonth) CompYear = Worksheets(NBG_ComparisonDataWorksheetName).Cells(Row, SOP).Value CompYear = DatePart("yyyy", CompYear) CompCarmaker = Worksheets(NBG_ComparisonDataWorksheetName).Cells(Row, Carmaker).Value CompProject = Worksheets(NBG_ComparisonDataWorksheetName).Cells(Row, Project).Value CompFamily = Worksheets(NBG_ComparisonDataWorksheetName).Cells(Row, Family).Value CompStatus = Worksheets(NBG_ComparisonDataWorksheetName).Cells(Row, Status).Value CompShare = Worksheets(NBG_ComparisonDataWorksheetName).Cells(Row, Share).Value Do While Row <= 2 NBGMonth = Worksheets(NBG_DataWorksheetName).Cells(Row, SOP).Value NBGMonth = DatePart("m", NBGMonth) NBGYear = Worksheets(NBG_DataWorksheetName).Cells(Row, SOP).Value NBGYear = DatePart("yyyy", NBGYear) NBGCarmaker = Worksheets(NBG_DataWorksheetName).Cells(Row, Carmaker).Value NBGProject = Worksheets(NBG_DataWorksheetName).Cells(Row, Project).Value NBGFamily = Worksheets(NBG_DataWorksheetName).Cells(Row, Family).Value NBGStatus = Worksheets(NBG_DataWorksheetName).Cells(Row, Status).Value NBGShare = Worksheets(NBG_DataWorksheetName).Cells(Row, Share).Value Row = Row + 1 ' StatusBar Show Application.StatusBar = "VerifySumofShares. Progress: " & Row & " of " & MAX_Row If (NBGMonth = CompMonth And NBGYear = CompYear And CompCarmaker = NBGCarmaker And CompProject = NBGProject And CompFamily = NBGFamily And NBGStatus <> "LOST" And CompStatus <> "LOST" And CompShare + NBGShare <= 99 And CompShare + NBGShare > 100) Then Worksheets(Issue_SumofSharesWorksheetName).Cells(3 + Issue_SumofSharesCnt, "A").Value = Row Worksheets(Issue_SumofSharesWorksheetName).Cells(3 + Issue_SumofSharesCnt, "B").Value = Worksheets(NBG_RegionaDataWorksheetName).Cells(Row, Project).Value Worksheets(Issue_SumofSharesWorksheetName).Cells(3 + Issue_SumofSharesCnt, "C").Value = GetMonthAndQuarter(Worksheets(NBG_RegionaDataWorksheetName).Cells(Row, SOP).Value) Worksheets(Issue_SumofSharesWorksheetName).Cells(3 + Issue_SumofSharesCnt, "D").Value = Worksheets(NBG_RegionaDataWorksheetName).Cells(Row, Family).Value Worksheets(Issue_SumofSharesWorksheetName).Cells(3 + Issue_SumofSharesCnt, "E").Value = Worksheets(NBG_RegionaDataWorksheetName).Cells(Row, Responsible).Value ' Region As String Region = "" 'Add any other GeoRegion which is also responsible in the recorded data If Worksheets(NBG_DataWorksheetName).Cells(Row, "BC") Then Region = Region + "@EMEA" End If If Worksheets(NBG_DataWorksheetName).Cells(Row, "BD") Then Region = Region + "@AMERICAS" End If If Worksheets(NBG_DataWorksheetName).Cells(Row, "BE") Then Region = Region + "@GCSA" End If If Worksheets(NBG_DataWorksheetName).Cells(Row, "BF") Then Region = Region + "@JAPAN&KOREA" End If Worksheets(Issue_SumofSharesWorksheetName).Cells(3 + Issue_SumofSharesCnt, "F").Value = Region 'Count the number of the cases recorded Issue_SumofSharesCnt = Issue_SumofSharesCnt + 1 'If there is no items , the Message to show ElseIf (Worksheets(NBG_RegionaDataWorksheetName).Cells(Row, SOP).Value = "There are no items to show in this view.") Then End If Loop Until Row = MAX_Row Next Row 

Do While...LoopDo...Loop Until循环之间有一个混合,VBA不知道如何解释。

要么改变:

  Do While Row <= 2 

至:

  Do 

做一个有效的Do...Loop Until循环。

或者改变:

  Loop Until Row = MAX_Row 

至:

  Loop 

做一个有效的Do While...Loop循环。