|
▼マクロ さん:
>累積時間(TextBox78+TextBox77)がうまく足されません。
>TextBox76.Text = Format$(TextBox78 + TextBox77 + TextBox82, "hh:nn")
>のようにしてみましたが、うまく足されません。
いくつか原因が考えられます。
といっても、これまでにレスしたことばかりで、繰り返しになりますが、
(1)TextBoxのText は、あくまでも文字列なので
時刻ではありません。時間にするには、
> t1 = TimeValue(TextBox49.Text)
のように、文字列を数値に変換する必要があります。
(2)ボタンがクリックされたら、
> TextBox49 = Format$(Now(), "hh:nn")
のように、Now()関数で取り出した現在日時を
「時刻だけ」TextBox に代入されていますが、
これでは 1日を跨ぐラップタイムを計算できないわけだし、
日時という数値を「hh:nn」型の「文字列」に変換して、
またそれを「時刻」という数値に再変換して時間差を計算して
いるので、回りくどいことをしています。
いまおやりになっていることを概念的にイメージで表すと
こんな感じです。↓
▼現行(うまくない)
Button Click⇒ 文字列("hh:nn") →変数(時刻のみ)
---------------------------------------------------------
【Button46】Now→ [TextBox49] → t1
【Button47】Now→ [TextBox50] → t2
[TextBox78] ← (t2 - t1)
[TextBox76] ← TextBox78 + TextBox77 + TextBox82 ???
【Button48】Now→ [TextBox53] → t3
【Button49】Now→ [TextBox54] → t4
[TextBox77] ← (t4- t3)
[TextBox76] ← TextBox78 + TextBox77 + TextBox82 ???
---------------------------------------------------------
これを 先のレス 【56642】のように変更してください。
上と同じイメージで表すと、こんな感じです。
▼改善案
---------------------------------------------------------
【Button46】Now → t1 → [TextBox49]
【Button47】Now → t2 → [TextBox50]
(t2 - t1) →[TextBox78]
[TextBox76] ← (t2 - t1) + (t4 - t3) + (t6 - t5)
【Button48】Now → t3 → [TextBox53]
【Button49】Now → t4 → [TextBox54]
(t4- t3) → [TextBox77]
[TextBox76] ← (t2 - t1) + (t4 - t3) + (t6 - t5)
---------------------------------------------------------
具体的なコードは【56642】に書いたとおりなので
(ボタン名やTextBox名を変えるだけです)
まず、プログラムの先頭で共有変数を用意しておいて、
Option Explicit
Private t1 As Date
Private t2 As Date
Private t3 As Date
Private t4 As Date
Private t5 As Date
Private t6 As Date
Private Sub UserForm_Initialize()
'変数 t1〜t6 を初期化しておきます
t1 = Now()
t2 = t1
t3 = t1
t4 = t1
t5 = t1
t6 = t1
End Sub
CommandButton46 がClick されたとき、変数 t1に Now()時刻を、
CommandButton47 がClick されたとき、変数 t2に Now()時刻を
CommandButton48 がClick されたとき、変数 t3に Now()時刻を、
CommandButton49 がClick されたとき、変数 t4に Now()時刻を
CommandButton50 がClick されたとき、変数 t5に Now()時刻を、
CommandButton51 がClick されたとき、変数 t6に Now()時刻を
それぞれ格納しておいて、
TextBox76 のトータル時間の表示は これらt1〜t6変数の合計値
として算出表示するようにします。
>TextBox76.Text = Format$(t2 - t1 + t4 - t3 + t6 - t5, "[h]:nn")
各CommandButtonがClickされたときの t1〜t6 変数への格納と、
TextBoxへの「時分hh:nn」表示部分は 先のレス 【56642】を参照
して、CommandButtonの番号とTextBoxの番号をそちらの環境に合わせ
修正してください。
Private Sub CommandButton46_Click()
t1 = Now()
TextBox49.Text = Format$(t1, "hh:nn")
End Sub
Private Sub CommandButton47_Click()
t2 = Now()
TextBox50.Text = Format$(t2, "hh:nn")
TextBox78.Text = Format$(t2 - t1, "hh:nn")
TextBox76.Text = Format$(t2 - t1 + t4 - t3 + t6 - t5, "[h]:nn")
End Sub
以下同様、
といった感じです。
|
|