Я хочу сравнить каждую строку листа NBG_Data с каждой строкой листа Comparison_Data, поэтому я хочу, чтобы каждая строка NBG_Data сравнивалась со всеми строками листа Comparison_Data, затем переходите к следующей строке , до тех пор, пока он не достигнет MAX_Row, проблема в том, что я не мог установить Nest цикл For (который я действительно хотел), поэтому я пытаюсь выполнить цикл Do, но когда я начинаю ошибку, это «Loop without Do» Если кто-нибудь скажет мне, что я сделал неправильно в цикле Do или лучше модифицировать, так что я могу иметь вложенную рабочую петлю.VBA Excel Сравните листы с вложенными данными Для
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
Плохой отступ делает код более трудным для чтения, особенно код с вложенными структурами. Предварительные версии 2.x [Rubberduck] (https://github.com/rubberduck-vba/Rubberduck/releases) (я скоро выпущу новый) включают переписку популярного * Smart Indenter * add- который автоматически, последовательно и быстро отступывает ваш код для вас. –