Мой вложенный цикл For-Each не проходит через каждую ячейку в данном диапазоне - PullRequest
0 голосов
/ 03 января 2019

В Excel VBA:

Мой второй цикл For-Each проходит только через первую ячейку в данном столбце.Мне нужна помощь, чтобы он прошел через каждую ячейку во всем столбце.

В моем коде, включенном здесь, я хочу перебрать каждую ячейку подряд (без проблем).затем, когда ячейка в строке соответствует моим критериям (без проблем), я хочу просмотреть каждую ячейку (celltwo) в столбце этой ячейки (проблема).

Я могу циклически проходить по строке и определять свои критерии, но тогда второй цикл for-each учитывает только первую ячейку два в данном столбце.Поэтому я никогда не получаю две ячейки с .row> = 10, первая ячейка в каждом столбце имеет строку = 1.

Любая помощь приветствуется.

Это для VBA в Excel.Я пробовал разные способы определения моего второго диапазона для прохождения цикла, но ничто не позволило циклу второй для каждого вернуться назад от "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, он будет проходить по каждой ячейке в столбце этой ячейки.Вместо этого он проходит только по первой ячейке в этом столбце и выходит из второй для каждого цикла

1 Ответ

0 голосов
/ 03 января 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...