top of page
ティーマネジメント株式会社 Tmanagement
TM_ロゴ_決定分_ol2.png

ExcelVBA~OnTimeを使ってみよう~

  • ムギ
  • 5月8日
  • 読了時間: 4分
ree

はじめに

こんにちは。ティーマネジメントのシステム担当ムギです。


最近、社内でExcel VBAを使う機会が多くなってきています。

そこで、今回はExcelVBAでOnTimeメソッドを使った内容をご紹介したいと思います。




OnTimeメソッドとは?

ExcelVBAのOnTimeメソッドは、指定した時刻にプロシージャ(マクロ)を

実行させることができるメソッドです。

時刻の指定は、特定の日時や特定の時間経過後などを指定することができます。


<基本構文>

Application.OnTime (EarliestTime,Procedure,LatestTime,Schedule)


・EarliestTime:プロシージャを実行する時刻

・Procedure:実行するプロシージャ名(文字列で指定)

・LatestTime:プロシージャの実行が可能になる最も遅い時刻(省略可能)

      (実行予定のプロシージャが実行できない場合、いつまで待機するか)

・Schedule:True→新しいOnTimeプロシージャを設定する(規定値)

      False→以前に設定したプロシージャを解除する


なお、OnTimeメソッドは実行待ち中にExcelが閉じられると、

予定されていたプロシージャは実行されませんのでご注意ください。


また、別のプロシージャが実行されていた場合や、セルへの入力中などは、

その作業が終了するまで予定されていたプロシージャの実行は待機されます。

(この待機時間の最大値を決めるのがLatestTime、指定されていない場合は作業終了まで待つ)




OnTimeメソッドを使ってみよう

では、実際にOnTimeメソッドを使ってみましょう。

今回は、会議の議事録をExcelに記録するとして、会議終了予定時刻にメッセージダイアログを出すという

処理を例にします。


※完成イメージ

ree


では早速内容を確認していきましょう。

大きくわけて、3つの対応が必要です。


ree

①モジュールレベル変数を設定

同じモジュール内で共通使用できる変数を宣言します。

※別のモジュールを使用する場合、パブリック変数で宣言しても問題ございません。


モジュールレベル変数は宣言セクションと呼ばれるエリアに記述します。

※宣言セクション: SubやFunctionなど、プロシージャの定義よりも前に配置される部分


以下の形式で変数を宣言します。

この変数には時刻が入る想定なので、変数の型はDate(日付型)を指定します。

※変数名は任意に設定で問題ございません。


Dim 変数名 As Date


ree


②指定時間に実行するプロシージャ

指定時間になったときに実行するプロシージャです。

今回の例では、会議終了時にメッセージダイアログを出すようにしたいため、MsgBox関数を使用します。


表示するメッセージの内容やその他のオプションはご自由に設定してみてください。


ree


③OnTimeメソッドで実行したい処理を予約するプロシージャ

今回の例では、会議開始時に実行するものになります。

Subプロシージャで作成していきます。


処理が開始されたことが分かりやすいように、

開始時に「会議を開始します。」とメッセージを出す処理も追加していますが、

こちらの部分はなくても問題ございません。


必要なコードとしては、以下の2つです。

<1>実行させたい時間を①で宣言した変数に格納する

<2>OnTimeメソッドで実行する処理を予約する


<1>実行させたい時間を①で宣言した変数に格納する

①で宣言した「実行時間」変数に、終了時刻が入力されているセルを指定しています。

こちらはセルの値でなく、TimeValueで直接時間を指定することもできます。


<2>OnTimeメソッドで実行する処理を予約する

ここでOnTimeメソッドの出番です。

新しくSubプロシージャを作成し、以下のような構文でコードを記述します。


Application.OnTime 実行させる時間, "実行するプロシージャ名"


今回の例に当てはめると、以下のようになります。

Application.OnTime 実行時間, "メッセージ表示"

 ※実行時間:①で宣言した「実行時間」変数

 ※メッセージ表示:②で作成した実行するプロシージャ名


この時、プロシージャ名は文字列で指定する必要があるため、

プロシージャ名を変数で指定したい場合は文字列型で指定してください。


ree


これで完成です!


あとはボタンや任意のオブジェクトにマクロを登録し、

会議開始時に実行するようにすれば、終了時刻に通知できるようになります。


通知が来るまでの間はセルに文字を入力するなど、Excelの編集が可能です。

ただし、セルにカーソルが入ったままになっていると指定時間になっても

処理が実行できないためご注意ください。

※確定してセルから抜けたときにメッセージが表示されます。


ree



おまけ

今回の例では指定時刻になったらメッセージを表示する、という設定にしましたが

会議終了時刻の5分前や、開始時間の○分後にダイアログを出すこともできます。


【会議終了時刻5分前にメッセージを表示】

※終了時刻がH3セルに入力されているものとする

ree

【開始時刻の1時間後にメッセージを表示】

ree




おわりに

いかがでしたでしょうか。

今回はExcelVBAのOnTimeメソッドを使って

指定時間にマクロを実行させる方法についてご紹介いたしました。


動作させたいExcelを開いている必要があるなど制限事項もありますが、

こんなのに使えるかも!と思える作業などがあればぜひご活用ください。



CONTACT

お問い合わせ

滋賀県大津市別保三丁目11番32号

077-536-6330

平日10:00~18:00

労働者派遣事業 派 25-300477

有料職業紹介事業  25-ユ-300214 

問い合わせのご用件 必須項目

送信ありがとうございました

Copyright © ティーマネジメント株式会社 All Rights Reserved.

bottom of page