vba 속도 관련 질문드립니다.

VBA
작성자
더운물
작성일
2021-06-09 10:04
조회
89

Sub Cal_gibon_Sigub()
Dim i As Long
Dim j As Long
Dim C As Range
Dim L As Range
Dim D As Range

Dim s1 As Double

Dim Maxval As Long

For i = 1 To 1000

Set C = ActiveSheet.Range("C8").Offset(i, 0)
ActiveSheet.Cells(8 + i, 3).Select

If IsEmpty(ActiveCell) Then
Exit For
End If

' Set k = ActiveSheet.Cells(1 + i, 3).Value
For j = 10 To 100000000 Step 50

ActiveSheet.Cells(i + 8, 4).Value = j
Set L = ActiveSheet.Range("L8").Offset(i, 0)
If L >= C Then
Exit For
End If
Next j

If L > C Then
Maxval = j
For s1 = j - 49.9 To Maxval Step 0.1
ActiveSheet.Cells(i + 8, 4).Value = s1
Set L = ActiveSheet.Range("L8").Offset(i, 0)
If L >= C Then
Exit For
End If
Next s1
End If

Next i

End Sub

 

 

허큘러스님 도움으로 오류는(For j = 1000 To 30000 Step 50 => 100000000 Dim j As Long) 해결했는데

회사 pc(인텔 펜티엄 / 8g램 / 엑셀 2019)에서 vba 실행하면 속도가 2-3초정도 걸리며 실행완료 되는데

집에 있는 노트북(i7-9750h / 16g램)에서 vba 실행하면 속도가 20~30초정도 걸리며 실행됩니다.

같은 vba인데 속도차이가 발생하는 이유가 알고 싶습니다.

또, 위의 명령문에서 속도를 빠르게 하기 위해서는 수정해야 할 부분이 있는지도 문의드립니다.

전체 6

  • 2021-06-10 02:27

    오 속도차이를 줄이시네요


  • 2021-06-09 15:48
    Application.ScreenUpdating = false
     
    Application.Calculation = xlCalculationManual
     
    Application.EnableEvents = false
     
    '명령문...
     
    Application.ScreenUpdating = True
     
    Application.Calculation = xlCalculationAutomatic
     
    Application.EnableEvents = True

    이렇게 작성해보세요


    • 2021-06-09 18:37

      제가 무지해서 답변해주신걸 이해 못했어요.

      자세한 설명 부탁드려요


      • 2021-06-09 19:58
        채택된 답변
        Sub Cal_gibon_Sigub()
        
        
        Dim i As Long
        Dim j As Long
        Dim C As Range
        Dim L As Range
        Dim D As Range
        
        Dim s1 As Double
        
        Dim Maxval As Long
        
        Application.ScreenUpdating = false
        
        Application.Calculation = xlCalculationManual
        
        Application.EnableEvents = false
        
        For i = 1 To 1000
        
        Set C = ActiveSheet.Range("C8").Offset(i, 0)
        ActiveSheet.Cells(8 + i, 3).Select
        
        If IsEmpty(ActiveCell) Then
        Exit For
        End If
        
        ' Set k = ActiveSheet.Cells(1 + i, 3).Value
        For j = 10 To 100000000 Step 50
        
        ActiveSheet.Cells(i + 8, 4).Value = j
        Set L = ActiveSheet.Range("L8").Offset(i, 0)
        If L >= C Then
        Exit For
        End If
        Next j
        
        If L > C Then
        Maxval = j
        For s1 = j - 49.9 To Maxval Step 0.1
        ActiveSheet.Cells(i + 8, 4).Value = s1
        Set L = ActiveSheet.Range("L8").Offset(i, 0)
        If L >= C Then
        Exit For
        End If
        Next s1
        End If
        
        Next i
        
        
        
        Application.ScreenUpdating = True
        
        Application.Calculation = xlCalculationAutomatic
        
        Application.EnableEvents = True
        
        End Sub

        이렇게요


        • 2021-06-09 23:44

          정말 빠르네요

          감사합니다 ^^


        • 2021-06-11 12:51

          저는 저렇게 하는데도 시간이 빠르게 안되더라구요.

           

           

          Sub sbProtectCells()
          
          Dim wkbook As Workbook
          Dim shtMain As Worksheet
          
          Dim shtCnt As Long
          Dim i As Long
          
          
          Set shtMain = ThisWorkbook.Sheets("Main")
          
          Workbooks.Open Filename:=shtMain.Cells(17, 3)
          
          '셀에 나타난 주소의 파일 꺼내오기
          Set wkbook = Application.ActiveWorkbook
          
          
          
          shtCnt = wkbook.Sheets.Count
          
          '파일의 시트 수 
          
          
          
          Dim shtRng As Range
          Dim nullrg As Range
          Dim chCell As Range, cm As Range
          On Error Resume Next
          
          
          '빠른 매크로 위한 명령문
          Application.ScreenUpdating = False
          
          Application.Calculation = xlCalculationManual
          
          Application.EnableEvents = False
          
              
          
          
          For i = 1 To shtCnt                                              '1부터 시트의 총 개수까지 반복
              
              With Sheets(i)
              .Unprotect
              
              Set shtRng = .UsedRange
                  With shtRng
                  .Cells.Locked = True
                  .SpecialCells(xlCellTypeBlanks).Locked = False    ' 빈 셀이 있으면 잠금 해제
                  End With
                  For Each chCell In shtRng.Cells   
                      If chCell.mergeCells Then                         '동적 범위 내에 병합셀이 있다면
                          Set cm = chCell.MergeArea                  '병합 영역으로 설정
                          cm.Locked = Not IsEmpty(cm.Cells(1))    '병합셀 내부에 값이 있다면 잠금 설정
                      End If
                  Next chCell
              .Protect                                                       '전체 시트 보호
              End With
              
          Next i
          
          
          
          
          wkbook.Close True
          
          
          Set wkbook = Nothing
          Set shtRng = Nothing
          Set nullrg = Nothing
          
          
          Application.ScreenUpdating = True
          
          Application.Calculation = xlCalculationAutomatic
          
          Application.EnableEvents = True

           


전체 3,281
번호 카테고리 제목 작성자 작성일 추천 조회
3268 VBA
New 엑셀 로그인양식 파일을 사용함에 있어서 문제점 첨부파일
바리오 | 12:33 | 추천 0 | 조회 27
바리오 12:33 0 27
3267 문서서식
New 셀에 숫자 입력시 칸 너비가 자동으로 넓어지는데요 안넓어지게 할 수 없나요?
월마리아 | 2021.06.24 | 추천 0 | 조회 35
월마리아 2021.06.24 0 35
3266 함수/공식
New [추세 관련] 엑셀 함수 문의 첨부파일 (9) 답변완료
엑셀어린잉 | 2021.06.24 | 추천 0 | 조회 44
엑셀어린잉 2021.06.24 0 44
3265 기능/도구
New [VBA] 공유한VBA 코드를 유지보수하는 팁을 구합니다. (2)
승이 | 2021.06.24 | 추천 0 | 조회 36
승이 2021.06.24 0 36
3264 VBA
New 원하는 행으로 이동 첨부파일 (5) 답변완료
Prankshe | 2021.06.24 | 추천 0 | 조회 41
Prankshe 2021.06.24 0 41
3263 함수/공식
New 무슨 함수 써야 할까요? 첨부파일 (4) 답변완료
복동아빠 | 2021.06.24 | 추천 0 | 조회 56
복동아빠 2021.06.24 0 56
3262 함수/공식
New [수식] 엑셀에서는 되는데 구글 스프레드시트에서의 수식 적용이 안됩니다. 이유가 뭘까요?
가람 | 2021.06.24 | 추천 1 | 조회 34
가람 2021.06.24 1 34
3261 함수/공식
New A열과 C열의 알파벳을 같게 정렬하면서 뒤에 값도 따라오게 하는 방법이 있을까요? (9) 답변완료
송병주 | 2021.06.24 | 추천 -1 | 조회 42
송병주 2021.06.24 -1 42
3260 함수/공식
New vlookup함수 활용 질문(깅급) (2)
인석 | 2021.06.24 | 추천 0 | 조회 39
인석 2021.06.24 0 39
3259 VBA
New 엑셀 파일을 몇번 이상 오픈시 잠그는 매크로를 사용하고 싶습니다. (8) 답변완료
랄라 | 2021.06.24 | 추천 0 | 조회 38
랄라 2021.06.24 0 38
3258 기능/도구
New 채우기효과-두가지색 문제 관련 (2)
스마일 | 2021.06.24 | 추천 0 | 조회 26
스마일 2021.06.24 0 26
3257 함수/공식
New 제가 만든 주식 엑셀에서 월별 합산을 구하고 싶습니다. 첨부파일
kp96**** | 2021.06.24 | 추천 0 | 조회 35
kp96**** 2021.06.24 0 35
3256 문서서식
New 찾기(ctrl+f) 옵션에서 셀 서식으로 찾기가 안되는데 도와주세요 첨부파일 (2)
월마리아 | 2021.06.23 | 추천 0 | 조회 31
월마리아 2021.06.23 0 31
3255 함수/공식
New 여러개의 리스트를 개별적인 파일로 (6) 답변완료
Fwangs | 2021.06.23 | 추천 0 | 조회 48
Fwangs 2021.06.23 0 48
3254 함수/공식
New 정렬(오름차순, 내림차순)후에 수식참조셀이 바뀌는 현상. 첨부파일 (2)
지프 | 2021.06.23 | 추천 0 | 조회 30
지프 2021.06.23 0 30
3253 함수/공식
New A열과 C열의 알파벳을 같게 정렬하면서 뒤에 값도 따라오게 하는 방법이 있을까요? (1)
송병주 | 2021.06.23 | 추천 0 | 조회 39
송병주 2021.06.23 0 39
3252 피벗테이블
New 피벗테이블 기간을 지정할수 있나요? 첨부파일
하늘미소 | 2021.06.23 | 추천 0 | 조회 25
하늘미소 2021.06.23 0 25
3251 VBA
New vba 시트 보호에서 셀 서식에 해당하는 Porperty는 어떤 것인지 궁금합니다. (2) 답변완료
sinbal | 2021.06.23 | 추천 0 | 조회 27
sinbal 2021.06.23 0 27
3250 VBA
New 안녕하세요 vba 크롤링 질문드립니다.
jaebe**** | 2021.06.22 | 추천 0 | 조회 27
jaebe**** 2021.06.22 0 27
3249 함수/공식
횡으로 출력되지 않는 문제 문의 첨부파일 (4) 답변완료
드래군 | 2021.06.22 | 추천 0 | 조회 46
드래군 2021.06.22 0 46
3248 함수/공식
1파일의 엑셀 내용을 또다른 2파일에 원하는 내용만 정리될 수 있나요? 첨부파일 (1)
Blak case | 2021.06.22 | 추천 0 | 조회 26
Blak case 2021.06.22 0 26
3247 대시보드
엑셀 대시보드 차트에서 데이터레이블 색 적용이 올바르게 되지 않습니다. 첨부파일 (1)
사이토 아스카 | 2021.06.22 | 추천 0 | 조회 20
사이토 아스카 2021.06.22 0 20
3246 함수/공식
엑셀 OFFSET함수 결과문의(수식작성은완료됨) 첨부파일 (5)
뚱이뚱이뚱이 | 2021.06.22 | 추천 0 | 조회 48
뚱이뚱이뚱이 2021.06.22 0 48
3245 함수/공식
병합된셀 순번 매기기 (3) 답변완료
기침과가난과사랑 | 2021.06.22 | 추천 0 | 조회 42
기침과가난과사랑 2021.06.22 0 42
3244 함수/공식
텍스트 비교 검색하여 값 불러오기 첨부파일 (2)
서퍼일구 | 2021.06.22 | 추천 0 | 조회 43
서퍼일구 2021.06.22 0 43
3243 함수/공식
무작위 데이터 추출방법 (2) 답변완료
매너겜 | 2021.06.22 | 추천 1 | 조회 52
매너겜 2021.06.22 1 52
3242 함수/공식
엑셀 textjoin 함수 두가지조건 만족시 첨부파일 (1)
dabinintl | 2021.06.22 | 추천 -1 | 조회 39
dabinintl 2021.06.22 -1 39
3241 함수/공식
테스트 평균값 구하는 방법 첨부파일 (3)
라핼 | 2021.06.22 | 추천 0 | 조회 37
라핼 2021.06.22 0 37
3240 피벗테이블
피벗테이블 슬라이서 문제 관련 (항목이많은순 top 우선순위 필터) 첨부파일 (3)
naver_60cc05afdace4 | 2021.06.22 | 추천 0 | 조회 30
naver_60cc05afdace4 2021.06.22 0 30
3239 VBA
엑셀 로그인 양식 응용방법 (1)
시딘씨 | 2021.06.21 | 추천 0 | 조회 42
시딘씨 2021.06.21 0 42