차례:
비디오: Excel 2016 VBA Beginner Tutorial - Introduction to Macros & VBA 2024
개체와 관련이없는 Excel 2016 용 VBA 프로그래밍에는 시간 및 키 누르기의 두 가지 유형의 이벤트를 사용할 수 있습니다. 시간 및 키 누르기는 통합 문서 나 워크 시트와 같은 특정 개체와 관련이 없으므로 이러한 이벤트는 일반 VBA 모듈에서 프로그래밍합니다.
OnTime 이벤트
OnTime 이벤트는 특정 시간대가 발생할 때 발생합니다. 다음 예제는 Excel에서 프로 시저를 실행할 때 3p. 엠. 이벤트가 발생합니다. 이 경우 로봇 음성 메시지 상자와 함께 일어나기를 알려줍니다:
Sub SetAlarm () 응용 프로그램. OnTime 0. 625, "DisplayAlarm"End Sub Sub DisplayAlarm () 응용 프로그램. 연설. 말하기 ("Hey, wake up") MsgBox "오후 휴식 시간입니다! "End Sub
이 예제에서는 Application 개체의 OnTime 메서드가 사용됩니다. 이 메서드는 시간 (0. 625 또는 3: 00 p.m.)과 시간 이벤트가 발생할 때 실행할 Sub 프로 시저의 이름 (DisplayAlarm)의 두 인수를 사용합니다.
이 과정은 당신이 회의 및 약속에 대해 잊어 버린 일에 너무 감싸는 경향이있는 경우에 매우 유용합니다. 자신에게 상기시키기 위해 OnTime 이벤트를 설정하기 만하면됩니다.
대부분의 사람들은 Excel 번호 매기기 시스템으로 시간을 생각하는 것을 어렵게 느낍니다. 따라서 VBA TimeValue 함수를 사용하여 시간을 나타낼 수 있습니다. TimeValue는 시간처럼 보이는 문자열을 Excel에서 처리 할 수있는 값으로 변환합니다. 다음 문장은 3 p에 대해 이벤트를 프로그래밍하는 더 쉬운 방법을 보여줍니다. 엠.:
신청서. OnTime TimeValue ("3: 00: 00 pm"), "DisplayAlarm"
현재 시간을 기준으로 이벤트를 예약하려는 경우 (예: 20 분 후) 다음과 같은 구문을 사용할 수 있습니다. < 신청서. OnTime Now + TimeValue ("00: 20: 00"), "DisplayAlarm"
OnTime 메서드를 사용하여 특정 날짜에 VBA 프로 시저를 실행할 수도 있습니다. 컴퓨터가 계속 실행되고 절차가 포함 된 통합 문서가 열려 있는지 확인해야합니다. 다음 명령문은 5p에서 DisplayAlarm 프로 시저를 실행합니다. 엠. 2016 년 12 월 31 일:
신청서. OnTime DateValue ("12/31/2016 5:00 pm"), "DisplayAlarm"
이 특별한 코드 행은 집에 가서 섣달 그믐 날의 축제를 준비해야한다고 경고하기 위해 편리 할 수 있습니다.
OnTime 이벤트를 사용하는 또 다른 예가 있습니다. UpdateClock 프로 시저를 실행하면 A1 셀에 시간을 기록하고 5 초 후에 다른 이벤트를 프로그램합니다.이 이벤트는 UpdateClock 프로 시저를 다시 실행합니다. 순 효과는 셀 A1이 5 초마다 현재 시간으로 업데이트된다는 것입니다. 이벤트를 중지하려면 StopClock 프로 시저 (이벤트를 취소 함)를 실행하십시오. NextTick은 다음 이벤트의 시간을 저장하는 모듈 수준의 변수입니다.
Dim NextTick As Date Sub UpdateClock () '셀 A1을 현재 시간 ThisWorkbook으로 업데이트합니다. 시트 (1). 범위 ("A1") = 시간 '다음 이벤트를 5 초 후에 설정하십시오. NextTick = Now + TimeValue ("00: 00: 05"). OnTime NextTick, "UpdateClock"End Sub Sub StopClock () 'OnTime 이벤트를 취소합니다 (시계를 중지). On Error 다음 응용 프로그램을 다시 시작합니다. OnTime NextTick, "UpdateClock", False End Sub
OnTime 이벤트는 통합 문서를 닫은 후에도 유지됩니다. 즉, StopClock 프로 시저를 실행하지 않고 통합 문서를 닫으면 통합 문서가 5 초 안에 다시 열립니다 (Excel이 아직 실행 중이라고 가정). 이 문제를 방지하려면 다음 문을 포함하는 Workbook_BeforeClose 이벤트 프로 시저를 사용하십시오.
Call StopClock
OnTime 메서드에는 두 개의 추가 인수가 있습니다. 이 방법을 사용하려면 자세한 내용을 보려면 도움말 시스템을 참조해야합니다.
다소 복잡한 응용 프로그램을보고 싶다면이 아날로그 시계 응용 프로그램을 확인하십시오. 시계 모양면은 실제로 차트이며 차트는 하루 중 시간을 표시하기 위해 매초마다 업데이트됩니다. 쓸모 없지만 재미 있습니다.
아날로그 시계 응용 프로그램입니다.
키 누르기 이벤트작업하는 동안 Excel은 사용자가 입력하는 내용을 지속적으로 모니터링합니다. 이 때문에 키 입력이나 키 조합이 프로 시저를 실행하도록 설정할 수 있습니다.
다음은 PgDn 및 PgUp 키를 다시 할당하는 예입니다.
Sub Setup_OnKey () Application. OnKey "{PgDn}", "PgDn_Sub"응용 프로그램. OnKey "{PgUp}", "PgUp_Sub"End Sub Sub PgDn_Sub () On Error 다음 ActiveCell을 다시 시작합니다. 오프셋 (1, 0). Activate End Sub Sub PgUp_Sub () On Error 다음 ActiveCell을 다시 시작합니다. 오프셋 (-1, 0). Activate End Sub
Setup_OnKey 프로 시저를 실행하여 OnKey 이벤트를 설정 한 후 PgDn을 누르면 한 행 아래로 이동합니다. PgUp 키를 누르면 한 행 위로 이동합니다.
키 코드는 괄호로 묶지 않고 괄호로 묶습니다. 키보드 코드의 전체 목록을 보려면 도움말 시스템을 참조하십시오.
OnKey를 검색하십시오. 이 예에서 On Error Resume Next는 생성 된 모든 오류를 무시하는 데 사용됩니다. 예를 들어, 활성 셀이 첫 번째 행에있는 경우 한 행 위로 이동하려고하면 안전하게 무시할 수있는 오류가 발생합니다. 차트 시트가 활성 상태이면 활성 셀이 없습니다.
다음 루틴을 실행하면 OnKey 이벤트가 취소됩니다.
Sub Cancel_OnKey () Application. OnKey "{PgDn}"응용 프로그램. OnKey 메서드의 두 번째 인수로 빈 문자열을 사용하면
OnKey 이벤트를 취소하지 않습니다
. 오히려 Excel이 키 입력을 무시하게 만듭니다. 예를 들어, 다음 명령문은 Excel에 Alt + F4를 무시하도록 지시합니다. 백분율 기호는 응용 프로그램의 Alt 키를 나타냅니다.OnKey "% {F4}", "" OnKey 메서드를 사용하여 매크로를 실행하는 바로 가기 키를 할당 할 수 있지만이 작업에 대해 매크로 옵션 대화 상자를 사용해야합니다.
코드가 포함 된 통합 문서를 닫고 Excel을 열린 상태로두면 OnKey 메서드가 다시 설정되지 않습니다. 결과적으로 바로 가기 키를 누르면 Excel이 매크로로 파일을 자동으로 엽니 다. 이 문제를 방지하려면 OnKey 이벤트를 다시 설정하려면 Workbook_BeforeClose 이벤트 코드에 코드를 포함해야합니다.