在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循环
答案 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