即効テクニック |
● 概要 ● Timer関数は、午前0時から経過した秒数を数値(単精度小数点型)で返す関数です。 そのため、Format/書式プロパティを「時刻」にしても正しい値は表示されませんし、DatePart関数で「時分秒」を取り出すことも出来ません。 そこで今回は、Timer関数の結果を「時分秒」に直す方法を説明します。 ● 準備 ● (1) 新規の非連結フォーム[フォーム1]を作成します。 (2) フォーム上にテキストボックス[テキスト1]〜[テキスト3]、コマンドボタン[コマンド1]を配置します。 (3) 以下の画像を参照して、テキストボックスと同時に作成されたラベルと、コマンドボタンの標題を変更します。 (4) フォームのクラスモジュールと、コマンドボタンのOnClick/クリック時イベントに、以下のプロシージャを記述します。 ● サンプルコード ● ' フォームのクラスモジュールに記述するユーザー定義関数 Private Function SetTime(TM As Single) Dim timeH As Integer Dim timeN As Integer Dim timeS As Integer '時分秒を取得 timeH = Int(TM / 3600) timeN = Int((TM Mod 3600) / 60) timeS = Int((TM Mod 3600) Mod 60) SetTime = timeH & "時" & timeN & "分" & timeS & "秒" End Function 'クリック時イベントの処理 Private Sub コマンド1_Click() Me.テキスト1 = Time Me.テキスト2 = Timer Me.テキスト3 = SetTime(Timer) End Sub ● 動作確認 ● フォームビューに変更し、コマンドボタンをクリックして下さい。 そうすると、[テキスト1]にはTime関数によって算出されたシステム時刻、[テキスト2]にはTimer関数によって算出された午前0時からの経過秒数、[テキスト3]には、ユーザー定義関数によってTimer関数の結果から変換された時分秒が表示されます ※ Time関数の時間とユーザー関数の時間に1秒のズレが生じることがあります ※ これはユーザー関数内の計算時間のためのロスです ● 詳細 ● ユーザー定義関数では、まずTimer関数によって取得した秒数を3600で割って時間を取得しています。 次に取得した秒数を3600で割った余りを求め、更に60で割ることによって分数を求めています。 最後に、上記の要領で分数を取り出した際の余りを更に60で割り、結果秒数を取得しています。 Timer関数によって与えられる秒数は小数点以下を含みますので、それぞれInt関数によって整数化してから、変数に格納しています。 それを最後に「時分秒」という文字と結合し、このユーザー関数の戻り値としています。