해결 엑셀2024윈도우10
Application.ScreenUpdating 디스플레이 기능을 끄고 싶어요
Option Explicit
Public Sub repeatMacro()
Dim LastRow As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
LastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
ws.Range("A1").Value = Format(Now, "hh:mm:ss")
ws.Range("A" & LastRow + 1) = Range("A1").Value
Application.OnTime Now + TimeValue("00:00:03"), "repeatMacro"
End Sub위 매크로는 매3초간...
그 시점의 시간을 최초 A1 셀에 입력하고
또 3초후에 그 시점의 시간을 A2셀에 입력하고.
또 3초후에 그 시점의 시간을 A3셀에 입력하고.
.
.
이렇게 매3초간 그 시간을 1행씩 아래쪽 줄로 바꾸며 찍어줍니다.
그러면 엑셀 시트 A행에는
14:23:01
14:23:04
14:23:07
.
.
.
이렇게 디스플레이 됩니다.
질문 : 이때 [ 줄을 바꾸며 시간을 찍는 과정 ] 이 모니터에 디스플레이 되는 것을 생략하고자 합니다. 왜냐? 그것을 모니터상에서 볼 필요가 없어서요. 대신 빠른 속도와 정확함이 더해졌으면 하거든요. 괜히 CPU만 잡아먹으니 속도가 느려지는거 같기도하구요. 실제로 해보면 처음에는 매3초간 잘 찍다가 이 매크로를 1시간 정도 돌리면 그땐 10초마다 찍고.. 하튼 꽤 느려집니다.
이걸 해결하기 위해 인터넷을 뒤적이니...
코드 상단부에 Application.ScreenUpdating = False 하고
코드 하단부에 Application.ScreenUpdating = True 라고 하면 된다고 하더군요.
디스플레이되는걸 생략하는 코드인거지요.
그런데 위 코드에 이것을 삽입해도 디스플레이되는 것은 멈추지 않더군요.
질문요지 : 디스플레이되는 것을 멈추게 하고 싶습니다.(디스플레이해봤자 아무 쓸모가 없거든요. 중요한 것은 빠르고 정확한 계산이향상됐으면 합니다. )
고수님들의 답변을구합니다. 감사합니다.
j
Y
l
뽀
악
댓글 2
Do .. Application.Wait Now + TimeValue("00:00:03") i = i + 1 Loop Until i = 10이런 형태로 작성하면 update = false를 걸 수 있으나 screenupdate 속성이 false가 되면 그동안 다른 엑셀 파일도 사용할 수 없는 문제가 있습니다.값을 숨기고자 하는게 목적이라면 숨김시트에 처리하는 것도 한 방법이니 참고해보십시오
그런데, Application.OnTime 으로 매크로를 호출하면 비동기 실행으로 Excel에 작업만 등록 시키고 매크로가 종료됩니다. 매크로가 종료되었으므로 다시 화면이 정상적으로 표시되어야 하는 것이죠.
화면 갱신을 중단하려면 비동기적인 방법 말고 현재 프로세스에서 진행되도록 작업하셔야 합니다.
그리고, 정확한 시간 주기가 필요하면 정밀 시간을 제어할 수 있는 다른 방법을 찾아 보세요.