programing

모든 시트 내용을 지우는 가장 빠른 방법 VBA

powerit 2023. 4. 28. 21:46
반응형

모든 시트 내용을 지우는 가장 빠른 방법 VBA

나는 모든 내용을 삭제해야 하는 큰 시트를 가지고 있습니다.VBA 없이 간단히 삭제하려고 하면 응답하지 않는 모드로 전환됩니다.다음과 같은 매크로를 사용하는 경우:

Sub ClearContents ()
 Application.Calculation = XlManual
 Application.ScreenUpdating = False

  Sheets("Zeroes").Cells.ClearContents

 Application.ScreenUpdating = True
End Sub

또한 반응이 없습니다.이것을 하는 가장 빠른 방법은 무엇입니까?

.Cells범위는 사용 중인 것으로 제한되지 않으므로, 코드는 1,048,576 행과 16,384 열 - 17,165,869,183 총 셀의 내용을 지웁니다.그건 시간이 좀 걸릴 겁니다.그냥 클리어.UsedRange대신:

Sheets("Zeros").UsedRange.ClearContents

또는 시트를 삭제하고 다시 추가할 수 있습니다.

Application.DisplayAlerts = False
Sheets("Zeros").Delete
Application.DisplayAlerts = True
Dim sheet As Worksheet
Set sheet = Sheets.Add
sheet.Name = "Zeros"

편집: (@tavnab 및 @Azura)
미래의 독자를 위해 준비합니다. 워크북의 마지막 또는 유일한 시트인 경우 해당 시트를 삭제할 수첩을 삭제할 수 없습니다.
이 경우 새 빈 시트를 먼저 추가하고 이전 시트를 삭제한 후 새 시트의 이름을 이전 시트의 이름으로 변경할 수 있습니다.또한 시트를 삭제하면 최근에 삭제된 시트를 참조하던 다른 시트의 공식과 충돌이 발생하므로 시트를 다시 작성해도 문제가 해결되지 않을 수 있습니다.

기술적으로, 그리고 코민테른이 승인한 해결책에서, 나는 당신이 실제로 시트의 모든 셀을 삭제하기를 원한다고 믿습니다.그러면 셀 내용뿐만 아니라 형식 지정(예외 사항은 각주 참조) 등이 제거됩니다.예.Sheets("Zeroes").Cells.Delete

Used Range, ScreenUpdating 및 Calculation을 함께 사용하면 거의 순간적으로 진행됩니다.

Sub DeleteCells ()
    Application.Calculation = XlManual
    Application.ScreenUpdating = False
    Sheets("Zeroes").UsedRange.Delete
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
End Sub

또는 Excel이 현재 위치한 계산 상태를 확인하려면 다음을 수행합니다.

Sub DeleteCells ()
    Dim SaveCalcState
    SaveCalcState = Application.Calculation
    Application.Calculation = XlManual
    Application.ScreenUpdating = False
    Sheets("Zeroes").UsedRange.Delete
    Application.ScreenUpdating = True
    Application.Calculation = SaveCalcState
End Sub

각주:전체 열에 대한 형식이 적용된 경우에는 삭제되지 않습니다.여기에는 글꼴 색상, 채우기 색상 및 테두리, 형식 범주(일반, 날짜, 텍스트 등) 및 기타 속성도 포함됩니다.

전체 행 형식과 마찬가지로 조건부 형식이 삭제됩니다.

전체 열 형식은 원시 데이터를 시트로 반복적으로 가져오는 경우 매우 유용합니다. 단순 붙여넣기-값만 형식 가져오기가 수행되면 원래 적용된 형식과 일치하기 때문입니다.

를 사용할 수 있습니다.방법 지우기:

Sheets("Zeros").UsedRange.Clear

이를 사용하면 워크시트의 나머지 부분에 영향을 주지 않고 셀 또는 범위의 내용형식을 제거할 수 있습니다.

사용해 보십시오.

Sub clear_sht
  Dim sht As Worksheet
  Set sht = Worksheets(GENERATOR_SHT_NAME)
  col_cnt = sht.UsedRange.Columns.count
  If col_cnt = 0 Then
    col_cnt = 1
  End If

  sht.Range(sht.Cells(1, 1), sht.Cells(sht.UsedRange.Rows.count, col_cnt)).Clear
End Sub

언급URL : https://stackoverflow.com/questions/29967411/quickest-way-to-clear-all-sheet-contents-vba

반응형