2012-08-13 2 views
10

그래서 각 루프에 대해 일련의 행을 통과하는 데 사용하고있었습니다. 나는 어디에서 행을 지우는 문제에 부 닥쳤다. 그래서 do while 루프로 바뀌기 위해 건너 뛴 행이 발생했다.Excel에서 '셀'개체를 얻는 방법 VBA

내가 겪고있는 문제는 '셀'개체를 얻으려고하는 것입니다. 내가했을 때 전에 :

For Each C In Worksheets("Blah").Range("A2:A" & lastRow).Cells 

내가

C.Offset(1, 0) 
C.Value = "Troy" 

등과 같은 일을 할 수있는 나는 사용하여 시도 :

C = Worksheets("Blah").Cells(iRow, 2) 

을하지만 그건 단지 C에게 셀의 값을 제공합니다. 실제 셀 객체를 얻으려면 어떻게해야합니까?

감사합니다.

답변

14

행을 삭제할 때 항상 아래에서 위로하는 것이 가장 좋습니다. 당신의 특별한 문제는 "Let"C를 범위 값으로 설정하기보다는 C를 범위 객체로 설정하기 위해 Set 키워드가 필요하다는 것입니다. 범위에는 기본 속성 인 Value가 있으며 사용 된 속성 인 속성을 생략하면 따라서 개체 변수를 할당 할 때 Set을 사용해야합니다. 다음은 행을 삭제하고 객체 변수를 할당하기 위해 역순으로 반복하는 예제입니다.

Sub DeleteRows() 

    Dim i As Long 
    Dim rRng As Range 
    Dim rCell As Range 

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

    For i = rRng.Rows.Count To 1 Step -1 
     Set rCell = rRng.Cells(i, 1) 
     If rCell.Value Mod 2 = 1 Then 
      rCell.EntireRow.Delete 
     End If 
    Next i 

End Sub 
+0

감사합니다. 내가 세트를 추가하면 모든 것이 고쳐졌다. –

+1

+1 멋진 설명. –

관련 문제