it-source

Range 개체가 지정된 경우 셀 범위의 각 셀을 반복합니다.

criticalcode 2023. 5. 1. 21:28
반응형

Range 개체가 지정된 경우 셀 범위의 각 셀을 반복합니다.

다음과 같은 코드가 있다고 가정해 보겠습니다.

Sub TestRangeLoop()
    Dim rng As Range
    Set rng = Range("A1:A6")

    ''//Insert code to loop through rng here
End Sub

저는 다음의 컬렉션을 통해 반복할 수 있기를 원합니다.Range지정된 각 셀에 대한 개체rng개념적으로, 저는 그렇게 하고 싶습니다.

For Each rngCell As Range in rng
     ''//Do something with rngCell
Next

파싱으로 해결할 수 있다는 것을 압니다.rng.Address및 건물Range수동으로 객체를 만들지만 문자열 구문 분석을 포함하지 않는 더 직접적인 방법이 있기를 바랍니다.

Sub LoopRange()

    Dim rCell As Range
    Dim rRng As Range

    Set rRng = Sheet1.Range("A1:A6")

    For Each rCell In rRng.Cells
        Debug.Print rCell.Address, rCell.Value
    Next rCell

End Sub

사용할 수 있습니다.Range.Rows,Range.Columns또는Range.Cells각 컬렉션에는 다음이 포함됩니다.Range물건들.

다음은 딕의 예를 수정하여 작업할 수 있는 방법입니다.Rows:

Sub LoopRange()

    Dim rCell As Range
    Dim rRng As Range

    Set rRng = Sheet1.Range("A1:A6")

    For Each rCell In rRng.Rows
        Debug.Print rCell.Address, rCell.Value
    Next rCell

End Sub

그리고.Columns:

Sub LoopRange()

    Dim rCell As Range
    Dim rRng As Range

    Set rRng = Sheet1.Range("A1:A6")

    For Each rCol In rRng.Columns
        For Each rCell In rCol.Rows
            Debug.Print rCell.Address, rCell.Value
        Next rCell
    Next rCol

End Sub

딕의 대답을 메모하기 위해, 이것은 맞지만, 저는 각 루프를 사용하는 것을 추천하지 않습니다.For Each(각자)는 액세스할 수 없는 장면 뒤에 COM 셀에 대한 임시 참조를 만듭니다(COM 셀을 폐기하는 데 필요함).

자세한 내용은 다음을 참조하십시오.

Excel interop 개체를 제대로 정리하려면 어떻게 해야 합니까?

이 문제를 설명하려면 각 예에 대한 예제를 사용하여 응용 프로그램을 닫고 작업 관리자를 확인하십시오.Excel 인스턴스가 여전히 실행 중임을 확인해야 합니다(모든 개체가 제대로 폐기되지 않았기 때문).

ADO를 사용하여 스프레드시트를 쿼리하는 것이 더 간편합니다.

http://technet.microsoft.com/en-us/library/ee692882.aspx

여기서 죽은 자들을 부활시키지만, 범위는 "A:A"를 각 루프에 사용하면 잠재적 무한 루프가 발생합니다.해결책은, 제가 아는 한,Do Until고리.

Do Until Selection.Value = ""
  Rem Do things here...
Loop

언급URL : https://stackoverflow.com/questions/3875415/loop-through-each-cell-in-a-range-of-cells-when-given-a-range-object

반응형