- ベストアンサー
【解説】Excel VBAでストップウォッチの時間表示を変更する方法
- Excel VBAのコードを使って、ユーザーフォーム上のストップウォッチの時間表示を変更する方法を解説します。
- 「0:02:29」と表示されている時間を「0:02」と表示するためには、VBAのコード内で時間の表示範囲を調整する必要があります。
- 具体的には、計測開始時間と計測終了時間の差を計算し、その差を時分秒の形式で表示することで、「0:02」という時間表示を実現できます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
これはVBAの質問ですか?VB6の質問ですか。ユーザーフォームとあるのでVBAでやってみた。 VBAなら日付・時刻は日付・時刻シリアル値が使われているのでFormatDateTimeを使わなくても良いのではと思う。 Label1.Caption = Format(m_Kaishi, "hh:mm")など。 質問のコードはほんとに動きましたか? VBAではないとか、私の方がおかしければ以下解答は無視してください。 ーー この質問のために、全体的にコードを全部書いて質問しなければダメかなと思った。 ーー 標準モジュールに Option Explicit Public inProcess As Boolean ' True なら計測中を表す Public m_Kaishi As Date Public m_Syuryo As Date ーー ユーザーフォームにはコマンドボタン2つと、ラベル3つを設けた。 コマンドボタンは開始用と終了用です。 テストの都合上、コントロールの名称は質問と変わっている。 ユーザーフォームのコードに Private Sub UserForm_Initialize() MsgBox "aaa" CommandButton1.Caption = "作業開始" inProcess = False Label1.Caption = "" Label2.Caption = "" Label3.Caption = "" End Sub ーー Private Sub CommandButton1_Click() Select Case inProcess Case False ' 計測を開始する inProcess = True m_Kaishi = Time MsgBox m_Kaishi Label1.Caption = FormatDateTime(m_Kaishi, vbShortTime) Label2.Caption = "" Label3.Caption = "" End Select End Sub Private Sub CommandButton2_Click() CommandButton1.Caption = "作業終了" Select Case inProcess Case True MsgBox "bbb" ' 計測を終了してインターバルを表示 inProcess = False m_Syuryo = Time Label2.Caption = FormatDateTime(m_Syuryo, vbShortTime) Label3.Caption = FormatDateTime(m_Syuryo - m_Kaishi, 4) CommandButton1.Caption = "作業開始" End Select End Sub Label3.Caption = FormatDateTime(m_Syuryo - m_Kaishi, 4)は http://homepage2.nifty.com/pasocon/nyumon/formatdatetime.html を参考にした。 ==== Formatをつかったっ例 一応テスト済み Private Sub CommandButton1_Click() Select Case inProcess Case False ' 計測を開始する inProcess = True m_Kaishi = Time MsgBox m_Kaishi 'Label1.Caption = FormatDateTime(m_Kaishi, vbShortTime) Label1.Caption = Format(m_Kaishi, "hh:mm") Label2.Caption = "" Label3.Caption = "" End Select End Sub Private Sub CommandButton2_Click() CommandButton1.Caption = "作業終了" Select Case inProcess Case True MsgBox "bbb" ' 計測を終了してインターバルを表示 inProcess = False m_Syuryo = Time 'Label2.Caption = FormatDateTime(m_Syuryo, vbShortTime) Label2.Caption = Format(m_Syuryo, "hh:mm") 'Label3.Caption = FormatDateTime(m_Syuryo - m_Kaishi, 4) Label3.Caption = Format(m_Syuryo - m_Kaishi, "hh:mm") CommandButton1.Caption = "作業開始" End Select End Sub
お礼
imogasi様いつもご回答ありがとうございます。 2番目に記述していただいた Formatを使用した例で 試してみたところ、○秒のところは表示されなくなりました。 ありがとうございます。 参照のHPも閲覧についても「FormatDateTime」関数の使い方も 良く分かりました。今後の参考とさせていただきます。