열 참조를 사용하여 VBA에서 셀 내용 지우기

열 참조를 사용하여 일부 셀의 데이터를 지우는 코드를 얻으려고 합니다. 다음 코드를 사용하고 있습니다:

Worksheets(sheetname).Range(.Cells(2, LastColData), .Cells(LastRowData, LastColData)).ClearContents

하지만 첫 번째 .Cells 섹션에서 오류가 발생하는데 그 이유는 무엇인가요?

해결책

워크시트.열 개체를 사용하여 전체 열을 범위로 액세스할 수 있습니다.

와 같은 식으로요:

Worksheets(sheetname).Columns(1).ClearContents 

는 A 열의 내용을 지워야 합니다.

행에 대해 비슷한 작업을 수행해야 하는 경우

해설 (0)

Gary의 학생이 언급했듯이 코드가 원래 작성된대로 작동하려면 Cells 앞의 점을 제거해야 합니다. 한 줄의 코드만 포함했기 때문에 확실하지는 않지만 점을 삭제했을 때 발생한 오류는 변수를 정의한 방법과 관련이 있을 수 있습니다.

변수를 정수로 정의한 상태에서 코드 줄을 실행해 보았는데 작동했습니다:

Sub TestClearLastColumn()

    Dim LastColData As Long
        Set LastColData = Range("A1").End(xlToRight).Column

    Dim LastRowData As Long
        Set LastRowData = Range("A1").End(xlDown).Row

    Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).ClearContents

End Sub

공유하신 코드 줄에 With 문이 적절하지 않다고 생각하지만, 만약 With를 사용해야 한다면 조작 중인 객체를 정의하는 줄의 시작 부분에 With를 넣어야 할 것입니다. 다음은 불필요한 With 문을 사용하여 재작성된 코드입니다:

With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
    .ClearContents
End With

With문은 코드를 다시 입력하는 수고를 덜고 코딩을 더 읽기 쉽게 만들기 위해 고안되었습니다. 객체로 두 가지 이상의 작업을 수행할 때 유용하고 적절해집니다. 예를 들어 열을 빨간색으로 바꾸고 굵은 검은색 테두리를 추가하려는 경우 다음과 같이With` 문을 사용할 수 있습니다:

With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
    .ClearContents
    .Interior.Color = vbRed
    .BorderAround Color:=vbBlack, Weight:=xlThick
End With

그렇지 않으면 다음과 같이 각 작업 또는 속성에 대한 범위를 선언해야 합니다:

    Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).ClearContents
    Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).Interior.Color = vbRed
    Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).BorderAround Color:=vbBlack, Weight:=xlThick

이 글을 통해 컴파일러가 왜 (부적절함에도 불구하고) With를 기대할 수 있다고 생각했는지, 그리고 코드에서 With가 언제 어떻게 유용할 수 있는지에 대해 이해하셨기를 바랍니다.

해설 (1)

그 전에 With 문이 필요합니다. 또는 .CellsCells로 만듭니다.

해설 (1)