【发布时间】:2019-05-30 07:02:11
【问题描述】:
在 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 循环
【问题讨论】:
-
Option Explicit。总是。
标签: excel vba for-loop if-statement