【问题标题】:My nested For-Each loop isn't going through each cell in a given range我的嵌套 For-Each 循环没有遍历给定范围内的每个单元格
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 感谢 SJR,以这种方式引用范围让我继续前进。我还有一个严重的参考问题——“CellTwo”在“UploadDash”工作表对象中,而不是“SummarySheet”工作表对象中——新年,和我一样
  • 忘记了Rows.Count之前的点?
猜你喜欢
  • 2018-05-11
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2021-11-20
  • 1970-01-01
相关资源
最近更新 更多