모든 시트 내용을 지우는 가장 빠른 방법 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
'programing' 카테고리의 다른 글
스위프트에서 초기화 중에 didSet을 호출할 수 있습니까? (0) | 2023.04.28 |
---|---|
셸 명령이 실행될 때 에코하는 방법 (0) | 2023.04.28 |
authenticationScheme이 지정되지 않았으며 기본 인증 및 사용자 지정 권한 부여로 DefaultChallengeScheme을 찾을 수 없습니다. (0) | 2023.04.28 |
Asp.net - 드롭다운 목록 맨 위에 빈 항목 추가 (0) | 2023.04.28 |
기능 호스트가 실행되고 있지 않습니다. (0) | 2023.04.28 |