2013-04-10 3 views
1

새로운 채용 정보를 얻기 위해 홀리데이 시트에 새 행을 삽입하는 매크로를 작성했습니다. 이제는 정상적으로 작동했지만 이제는 중단되어 시간이 많이 걸립니다. 새 행을 삽입하십시오. 나는 장애인을 ScreenUpdating 한매크로가 매우 느리게 실행 중임

For f = 1 To Worksheets.Count - 1 

    Worksheets(f).Select 

    Range("A1").Select 

    If Worksheets(f).Name = "FLEXI" Then 

     Range("A1").Select 
     N = Range("A2").Value 
     Range("A" & NewRow).Select 
     Selection.EntireRow.Insert 
     Range("A" & NewRow + N + 1).Select 
     Selection.EntireRow.Insert 
     GoTo flexidivert 
    End If 

Range("A" & NewRow).Select 
Selection.EntireRow.Insert 

flexidivert: 
Next f 

, 장애인 enableEvents를하고 평소 용의자가 여기에 직장에서되지 않도록 계산이 수동으로 설정 : 여기에 영향을받는 코드입니다. 그렇게 간단한 절차이기 때문에 계산하는 데 몇 분이 걸리는 이유를 이해할 수 없습니다. NewRow는 붙여 넣을 행이며 worksheets.count = 5이므로 스크롤 할 수있는 번호가 없습니다.

+2

코드를 엎드려서 ...이 링크를 참조하십시오. http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select/10718179#10718179 –

+0

워크 시트를 반복해야하는 이유는 무엇입니까? 워크 시트를 직접 참조하고 선택하지 않는 이유는 무엇입니까? –

+0

또한, 매번 행을 삽입 할 때마다 Exels 계산 엔진이 모든 셀을 검사하고 모든 범위 이름이 재정의됩니다 ... 그래서 수식이있는 경우 자동 계산을 먼저 사용하지 마십시오 –

답변

1

위의 내 의견에 더 나아가, 당신이하려는 일이 무엇입니까?

For f = 1 To Worksheets.Count - 1 
    With Worksheets(f) 
     .Range("A" & NewRow).EntireRow.Insert 

     If .Name = "FLEXI" Then 
      N = .Range("A2").Value 
      .Range("A" & NewRow + N + 1).EntireRow.Insert 
     End If 
    End With 
Next f 

모든 변수를 올바르게 선언했고 셀 A2에 숫자 값이 있다고 가정합니다.

+0

select를 사용하면 속도를 느리게 할 수 있지만 수행하는 정도는 아닙니다. 완료하는 데 분이 걸립니다. 귀하의 솔루션을 주셔서 감사합니다, 나는 이전 버전으로 모든 코드가 있지만 속도 문제가 없어 대신 돌아갔습니다. – user1545643

+0

위의 코드를 사용해 보셨습니까? –

0

당신이 woreksheet 루프 할 필요의 이름을 알고있는 경우,

또한 INSERT를 사용하기 전에 셀을 선택하려면 아래

Worksheets("FLEXI").select 
N = Range("A2").Value 
Range("A" & NewRow).EntireRow.Insert shift:=xldown 
Range("A" & NewRow + N + 1).EntireRow.Insert shift:=xldown 
Range("A" & NewRow).EntireRow.Insert shift:=xldown 

필요를 시도하지, 그냥 수집

을 통해 직접 참조 ALL 기타 사항 서보 -OFF 정말 SL을 사용하여

HTH

필립

관련 문제