source

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

manycodes 2023. 6. 30. 22:28
반응형

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

열 참조를 사용하여 일부 셀의 데이터를 지우기 위한 코드를 가져오려고 합니다.다음 코드를 사용하고 있습니다.

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

하지만 이를 위해 처음에는 오류가 발생합니다.세포과, 왜 그럴까요?

을 다사전 열범액수있다니습세를 하여 전체 수 .Worksheet.Columns

다음과 같은 것:

Worksheets(sheetname).Columns(1).ClearContents 

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

또한 다음과 같은 기능도 있습니다.Worksheet.Rows에 대해 합니다.


수신되는 오류는 블록이 누락되었기 때문일 수 있습니다.

블록에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

저처럼 머리글을 지울 수 없는 솔루션을 필요로 하는 사람들을 위해, 여기 저에게 맞는 라이너가 하나 있습니다.

ActiveSheet.Range("A3:A" & Range("A3").End(xlDown).Row).ClearContents

세 번째 행부터 시작합니다. 원하는 대로 변경합니다.

개리의 학생이 언급했듯이, 당신은 그 전에 점을 제거해야 할 것입니다.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 만약 한다면, , 당이하사면다용한나를신만약하이에인유술한드▁you▁is,면다▁statement.With조작 중인 개체를 정의하는 줄의 시작 부분에 있습니다.불필요한 코드를 사용하여 다시 작성한 코드입니다.With문:

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

With문은 코드 재입력을 방지하고 코드를 읽기 쉽게 하기 위해 설계되었습니다.개체에 대해 두 가지 이상의 작업을 수행하면 유용하고 적합해집니다.를 들어,테두리를 ▁a▁use▁for면,를 사용할 수 있습니다.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) 언제 a (어떠한 때에)를With코드에 유용할 수 있습니다.

저는 방금 아주 간단한 시트 전체를 지우는 방법을 생각해냈습니다.

Sub ClearThisSheet()

ActiveSheet.UsedRange.ClearContents

End Sub

저는 이것이 원하는 행과 열 사이의 모양으로 청소하는 쉬운 방법이라는 것을 알았습니다.이것이 당신이 찾고 있는 것인지 확실하지 않습니다.도움이 되길 바랍니다.

Sub sbClearCellsOnlyData()
Range("A1:C10").ClearContents
End Sub

전에 With 문이 필요합니다.아니면 만들어요.을 셀로

데이터가 있는 모든 행을 지우려면 다음과 같은 두 변수를 사용합니다.필요하면 일정 범위의 열로 조정할 수 있기 때문에 마음에 듭니다.마지막 행을 정수로 Dim CRow를 정수로 Dim

CRow = 1
LastRow = Cells(Rows.Count, 3).End(xlUp).Row

Do Until CRow = LastRow + 1
    Cells(CRow, 1).Value = Empty
    Cells(CRow, 2).Value = Empty
    Cells(CRow, 3).Value = Empty
    Cells(CRow, 4).Value = Empty
    CRow = CRow + 1
Loop

문제는 with 문이 아니라 Range 기능에 있으며 절대 셀 값을 허용하지 않습니다.범위("A4:B100")와 같아야 합니다.다음 스레드를 참조할 수 있습니다.

다음 코드가 작동해야 합니다.셀(1,1)을 "A1"로 변환하거나 그 반대로 변환합니다.

LastColData = Sheets(WSNAME).Range("A4").End(xlToRight).Column
            LastRowData = Sheets(WSNAME).Range("A4").End(xlDown).Row
            Rng = "A4:" & Sheets(WSNAME).Cells(LastRowData, LastColData).Address(RowAbsolute:=False, ColumnAbsolute:=False)

 Worksheets(WSNAME).Range(Rng).ClearContents

언급URL : https://stackoverflow.com/questions/19593907/clear-contents-of-cells-in-vba-using-column-reference

반응형