目次:
ビデオ: Excel 2016 VBA Beginner Tutorial - Introduction to Macros & VBA 2024
オブジェクトに関連付けられていないExcel 2016のVBAプログラミングで使用できるイベントには、時間とキーの2種類があります。時間とキー押下はワークブックやワークシートなどの特定のオブジェクトに関連付けられていないため、通常のVBAモジュールでこれらのイベントをプログラムします。
OnTimeイベント
OnTimeイベントは、特定の時刻が発生したときに発生します。次の例は、3つの時点でプロシージャを実行するようにExcelを取得する方法を示しています。 m。イベントが発生します。この場合、ロボットの声は、
<! - 1 - >Sub SetAlarm()アプリケーション。 OnTime 0. 625、 "DisplayAlarm" End Sub Sub DisplayAlarm()アプリケーション。スピーチ話す(「おい、目を覚ます」)MsgBox「あなたの午後の休憩時間だ! "End Sub
この例では、ApplicationオブジェクトのOnTimeメソッドが使用されています。このメソッドは、時間(0. 625または3:00 p.m。)と、タイムイベントが発生したときに実行するSubプロシージャの名前(DisplayAlarm)の2つの引数をとります。
<! - 2 - >この手順は、会議や予定について忘れてしまったように仕事に巻き込まれがちな場合には非常に便利です。あなたに思い出させるためにOnTimeイベントを設定するだけです。
ほとんどの人は、Excelの番号付けシステムでは時間を考えるのが難しいと感じています。したがって、VBA TimeValue関数を使用して時刻を表すことができます。 TimeValueは、時間のように見える文字列をExcelが処理できる値に変換します。次のステートメントは、3 pのイベントをプログラムする簡単な方法を示しています。 m。 :
<! - 3 - >適用。 OnTime TimeValue( "3:00:00 pm")、 "DisplayAlarm"
現在の時刻(たとえば20分)を基準にイベントをスケジュールする場合は、次のようなステートメントを使用できます。< アプリケーション。 OnTime Now + TimeValue( "00:20:00")、 "DisplayAlarm"
OnTimeメソッドを使用して、特定の日にVBAプロシージャを実行することもできます。コンピュータが動作し続けていること、および手順を含むブックが開いたままであることを確認する必要があります。次のステートメントは、5 pでDisplayAlarmプロシージャを実行します。 m。 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)。 Range( "A1")= Time '次のイベントを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プロシージャを実行せずにブックを閉じると、Excelがまだ実行中であることを前提として、5秒後にブックが再度開きます。これを防ぐには、次の文を含むWorkbook_BeforeCloseイベントプロシージャを使用します。
Call StopClock
OnTimeメソッドには、2つの追加引数があります。この方法を使用する場合は、完全な詳細についてヘルプシステムを参照する必要があります。
かなり複雑なアプリケーションを見たい場合は、このアナログ時計アプリケーションをチェックしてください。時計の顔は実際にはチャートであり、1秒ごとにチャートが更新されて時刻が表示されます。役に立たなくても楽しい。
アナログ時計アプリケーション。
キープレスイベント仕事をしている間、Excelは入力内容を常に監視します。このため、キーストロークまたはキーの組み合わせによってプロシージャが実行されるように設定できます。
PgDnキーとPgUpキーを再割り当てする例を次に示します。
Sub Setup_OnKey()アプリケーション。 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を押すと1行下に移動します。 PgUpを押すと1行上に移動します。
キーコードは括弧で囲まれていないことに注意してください。キーボードコードの完全なリストについては、ヘルプシステムを参照してください。
OnKeyを検索します。 この例では、On Error Resume Nextを使用して、生成されたエラーをすべて無視します。たとえば、アクティブなセルが最初の行にある場合、1つの行を上に移動しようとすると、無視することができるエラーが発生します。また、チャートシートがアクティブな場合、アクティブなセルはありません。
次のルーチンを実行すると、OnKeyイベントをキャンセルします。
Sub Cancel_OnKey()アプリケーション。 OnKey "{PgDn}"アプリケーション。 OnKeyメソッドの2番目の引数として空の文字列を使用すると、
OnKeyイベントをキャンセルしません
。むしろ、Excelは単にキーストロークを無視します。たとえば、次の文は、Alt + F4を無視するようにExcelに指示します。パーセント記号は、 アプリケーションのAltキーを表します。OnKey "%{F4}"、 "" OnKeyメソッドを使用してマクロを実行するためのショートカットキーを割り当てることはできますが、このタスクでは[マクロオプション]ダイアログボックスを使用する必要があります。
コードを含むブックを閉じてExcelを開いたままにしておくと、OnKeyメソッドはリセットされません。結果として、ショートカットキーを押すと、自動的にマクロでファイルが開かれます。これが発生しないようにするには、OnKeyイベントをリセットするコードをWorkbook_BeforeCloseイベントコードに含める必要があります。