我嵌套的For-Each循环没有遍历给定范围内的每个像元

时间:2019-01-03 16:52:08

标签: excel vba for-loop if-statement

在Excel VBA中:

我的第二个For-Each循环仅通过给定列中的第一个单元格。 我需要帮助使其遍历整列中的每个单元格。

在这里包含的代码中,我想遍历一行中的每个单元(没有问题)。然后,一旦该行中的某个单元格符合我的条件(没有问题),我就想遍历该单元格列(问题)中的每个单元格(celltwo)。

我能够遍历该行并确定我的条件,但是第二个for-each循环仅考虑给定列中的第一个celltwo。因此,我永远都不会得到.row> = 10的celltwo,每列的第一个单元格都具有row = 1。

感谢您的帮助。

这用于Excel中的VBA。我尝试了不同的方法来确定要遍历的第二个范围,但没有任何措施使第二个for-each循环从“ Next Celltwo”循环回到循环的开头。

Sub WriteSummary()
Dim UploadRange As Range
Dim SummaryRow As Integer
Dim CategoryRange As Range
Dim Cell As Range
Dim Celltwo As Range

''''''''''''''''''''''''''''''''''''''''''''''''''''
'Set Variables
    Set MacroFile = ThisWorkbook
    Set MacroSheet = ThisWorkbook.Worksheets("Macro")
    Set UploadDash = ThisWorkbook.Worksheets("Upload Dash")
    Set SummarySheet = ThisWorkbook.Worksheets("Summary")
    Set IndexSheet = ThisWorkbook.Worksheets("Indexes")
    Set CategoryRange = UploadDash.Range("5:5")
''''''''''''''''''''''''''''''''''''''''''''''''''''
'Determine Output Row
SummaryRow = SummarySheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

''''''MY PROBLEM STARTS HERE'''''''

For Each Cell In CategoryRange
If Cell.Value = 8840 Then
    For Each Celltwo In SummarySheet.Cells(, Cell.Column).EntireColumn
                i = MsgBox(Celltwo.Row, vbOKOnly)
        If Celltwo.Row >= 10 Then

            If Celltwo.Value > 0 Then
            o = MsgBox(Celltwo.AddressLocal)

                SummaryRow = SummaryRow + 1
            Else
            End If
        Else

        End If
    Next Celltwo '''''DOES NOT LOOP'''''
Else
End If
Next Cell

我希望当代码找到cell.value = 8840时,它将循环遍历该单元格列中的每个单元格。相反,它仅循环通过该列中的第一个单元格并退出第二个for-each循环

1 个答案:

答案 0 :(得分:0)

Cells需要行和列的参数,但是我认为是EntireColumn将整个列作为一个范围。

请尝试类似这样的操作,它将限于包含某些内容的单元格。

它从第6行开始,所以要修改以适合。

With SummarySheet
    For Each Celltwo In .Range(.Cells(6, Cell.Column), .Cells(.Rows.Count, Cell.Column).end(xlup))
        ' etc
    Next
End With