데이터를 찾고 행을 복사하고 다른 시트에 붙여 넣고 여러 시트 사이의 값을 바꿀 속도를 향상 시키려고합니다.VBA 찾기, 복사, 붙여 넣기, 시트 간 교체 속도 향상
현재 각 시트를 활성화하고 cells.Find를 사용하고 있지만 60k + 행을 검색 할 때 매우 느리거나 전혀 진행되지 않습니다. 여기
내가 "개선하기 위해 노력하고있어 기본적인 프로세스입니다.Sub UpdateSKU()
'On Error GoTo ErrorCatch
Dim OldSKU As Long
Dim NewSKU As Long
Dim SKUSubset As String
Dim SubsetRange As Range
OldSKU = Sheets("Rollover Request").Range("A2")
NewSKU = Sheets("Rollover Request").Range("B2")
'UPDATE NEW SKU IMPORTER
Sheets("SKU Exporter").Activate
Cells.Find(what:=OldSKU, after:=ActiveCell, LookIn:=xlFormulas, _
Lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.EntireRow.Copy
Sheets("New SKU Importer").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Worksheets("New SKU Importer").Columns("A:A").Replace what:=OldSKU, Replacement:=NewSKU, Lookat:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
내가 통합 문서에서 여러 다른 시트에 대해이 작업을 수행
어떤 도움도 대단히 감사하겠습니다 감사합니다
!
[이 게시물은 많은 것을 다룹니다.] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) 그것에. 또한 켜고 끄기 * screenupdating *; 변수 선언 다음에'Application.ScreenUpdating = False', 서브를 끝내기 전에'Application.ScreenUpdating = True'가됩니다. – L42
범위 또는 워크 시트를 활성화 (또는 선택) 할 수있는 이유가 거의 없습니다 (코드에는 포함되지 않음). 그렇게하면 코드가 상당히 느려집니다. 범위를 직접 참조하십시오. 또한 ScreenUpdating을 해제해야합니다. 계산을 수동으로 설정하십시오. 이벤트 매크로가 실행 중이면 이벤트를 비활성화하십시오. –
안녕하세요, 화면을 업데이트하지 않아서 도움이되었습니다. 나는 VBA에 새로운 슈퍼이므로 범위를 직접 언급하는 것은 내가하는 방법을 알아 내려고 노력하고있는 것이다. –