Option Explicit
' 아래 Schedule1() 는 매크로 실행버튼을 만들어 동작시키려고 합니다.
'해당칸에 3이 입력되면 "일어나라"는 메세지박스 출력이 2초후 실행됩니다.
' 네. 아무 문제없이 잘 실행됩니다. 질문은 실행버튼 말고, 셀안 조건식인데요.
Sub Schedule1()
Dim i As Integer
i = Range("G12").Value
If i = 3 Then
Application.OnTime Now + TimeValue("00:00:02"), "disp_msg"
End If
End Sub
' 여기서부터 질문입니다.
' 아래 Schedule3() 는 매크로 실행버튼말고
' 셀에 조건식을 넣어서 매크로를 실행시키려 합니다. 아래와 같이 셀에 입력
' =IF(E12=3,Schedule3(),"X")
' E12=3 입력시 아래 매크로가 실행. "일어나라"는 메세지박스 출력이 2초후 되어야 하는데
' 아무 반응이 없습니다.
' 뭐가 잘못된건지 이유와 해결책을 알고 싶습니다.
Sub Schedule3()
Application.OnTime Now + TimeValue("00:00:02"), "disp_msg"
End Sub
Sub disp_msg()
MsgBox "일어날 시간입니다"
End Sub위 코드에 제 질문을 넣었습니다.
파일도 첨부합니다.

예를 들어 셀 선택이 바뀌면 (다른 셀을 클릭하면) Worksheet_SelectionChange이벤트가
셀의 내용이 수정이 되면 Worksheet_Change 이벤트가 발생을 합니다.
이런 지원되는 이벤트에 원하는 내용의 매크로 코드를 넣으셔야 합니다.
아래는 E12셀에 값이 3으로 변경되면 2초후에 실행되도록 하는 매크로가 됩니다.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(False, False) <> "E12" Then Exit Sub If Target.Value = 3 Then Application.OnTime Now + TimeValue("00:00:02"), "disp_msg" End If End Sub셀에 =IF(E12=3,disp_msg(),"X") 라고 입력하면
Worksheet_Change 이벤트가 없어도 매크로 실행이 잘 되거든요.
E12에 3을 입력하면 메세지창이 잘 띄어집니다. ( 첨부파일 재첨부함)
왜 어떤 것은 선생님의 지적대로 Worksheet_Change 이벤트 같은 메소드를 꼭 넣어야 하고,
왜 어떤 것은 안넣어도 잘 되고..무슨 차이가 있는건지,
코드작성시 되고안되고 유무를 어떻게 구분하는 지 등등 여쭙니다. 감사합니다.
셀 수식에서 Function이 아닌 Sub를 호출해 본 적도 없어서 저도 처음 봅니다.
명확히 Excel에서 수행을 보장하는 방법으로 구성을 하는 것이라 이벤트를 사용하는 것이지요.
셀 수식에서 Function이든 Sub든 어떤 동작을 하게 한다면, 여러 사유로 시트가 재계산 될 때마다 저 동작이 수행될 가능성이 있어 보여 의도하지 않은 결과가 나올 수 있겠습니다.