해결 엑셀2021윈도우11
sheet1 의 매크로, sheet2를 보고 있을때도 실행시킬려면...
안녕하세요
위는 [ 매 2초마다 A1에 현재시간 갱신하고 그것을 1행식 누적해가기 ] 이고 이 작업은 sheet1에서 합니다.
즉 이 매크로는 단발성 매크로가 아니라 [ sheet1 에서 지속되는 매크로 ] 라고 볼 수 있겠네요.
샘플파일이 있으니 직접 해보시면 압니다. 그런데 sheet2로 이동하면 이 계산및누적해가기를 멈춥니다.
그러다 sheet1 으로 돌아오면 다시 정상작동합니다.
질문 : 제가 sheet2를 보고 있는 상태에서도, sheet1 에서 수행중인 이 계산을 멈춤없이 지속시킬려면 코드를 어떻게 수정해야 하나요?
감사합니다.
제가 시도했었던 방법들 :
1.
Sheets("Sheet1").Activate 이라는 코드를 서두에 삽입하면 된다고 구글인공지능이 말해줌. 그래서 해보니까, 되긴 되는데, sheet2를 보고 있으면 강제로 sheet1으로 가버림. 제가 원하는 건 sheet2에서 계속 머물러도 sheet1은 계산을 지속하는 것을 원함.
2.
서두에 Application.EnableEvents = False 하고, 말미에 Application.EnableEvents = True 하면 된다고 구글인공지능이 말해줘서 해봣는데, 이것은 아예 되지도 않음. 왜 구글이 된다고 말하는지 모르겟음.
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") 'A1에 현재시간 표시, 2초후 또 표시, 2초후 또 표시
ws.Range("A" & LastRow + 1) = Range("A1").Value
Application.OnTime Now + TimeValue("00:00:02"), "repeatMacro"
End Sub위는 [ 매 2초마다 A1에 현재시간 갱신하고 그것을 1행식 누적해가기 ] 이고 이 작업은 sheet1에서 합니다.
즉 이 매크로는 단발성 매크로가 아니라 [ sheet1 에서 지속되는 매크로 ] 라고 볼 수 있겠네요.
샘플파일이 있으니 직접 해보시면 압니다. 그런데 sheet2로 이동하면 이 계산및누적해가기를 멈춥니다.
그러다 sheet1 으로 돌아오면 다시 정상작동합니다.
질문 : 제가 sheet2를 보고 있는 상태에서도, sheet1 에서 수행중인 이 계산을 멈춤없이 지속시킬려면 코드를 어떻게 수정해야 하나요?
감사합니다.
제가 시도했었던 방법들 :
1.
Sheets("Sheet1").Activate 이라는 코드를 서두에 삽입하면 된다고 구글인공지능이 말해줌. 그래서 해보니까, 되긴 되는데, sheet2를 보고 있으면 강제로 sheet1으로 가버림. 제가 원하는 건 sheet2에서 계속 머물러도 sheet1은 계산을 지속하는 것을 원함.
2.
서두에 Application.EnableEvents = False 하고, 말미에 Application.EnableEvents = True 하면 된다고 구글인공지능이 말해줘서 해봣는데, 이것은 아예 되지도 않음. 왜 구글이 된다고 말하는지 모르겟음.
콜
이
숫
댓글 4
이렇게 해 보세요^^
원 코드가 큰 문제는 없는 듯 한데...
ws.Range("A" & LastRow + 1) = Range("A1").Value이 부분을
ws.Range("A" & LastRow + 1).Value = ws.Range("A1").Value이렇게 바꿔보세요~
Option Explicit Public StopFlag As Boolean Public Sub repeatMacro() Dim LastRow As Long Dim ws As Worksheet '// 중단 플래그 체크 If StopFlag Then StopFlag = False ' 플래그 초기화 MsgBox "매크로가 중단되었습니다." Exit Sub End If Set ws = ThisWorkbook.Sheets("Sheet1") LastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row '// A1에 현재시간 표시 ws.Range("A1").Value = Format(Now, "hh:mm:ss") '// 새로운 행에 시간 추가 ws.Range("A" & LastRow + 1).Value = ws.Range("A1").Value '// 2초 후 다시 실행 예약 (중단 플래그가 False일 때만) If Not StopFlag Then Application.OnTime Now + TimeValue("00:00:02"), "repeatMacro" End If End Sub ':::::::::::::::: 중단 ::::::::::::::::::::::::::::::::: Public Sub StopMacro() StopFlag = True MsgBox "중단 명령이 전달되었습니다. 다음 실행 시점에 중단됩니다." End SubSheet2로 이동하면, Range("A1").Value 가 Sheet2의 A1 값을 의미하는게 되버리는데 공백이니까 값이 안찍히고 있었던 것입니다.