|
▼kanabun さん:
>▼マクロ さん:
>>累積時間(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
>以下同様、
>といった感じです。
返事が遅くなりまして、すいませんでした。
無事に動くようになりました。質問ばかりですいませんが、
TextBox76が累計時間
TextBox78、TextBox77、TextBox82が小計時間になっていますが、
小計時間と累積時間をCommandButtonでワークシートに保存するようにしていますが、ここで、TextBox78、TextBox77には時間が入っていますが、
TextBox82には未入力時にワークシートに飛ばすと、00:00とワークシート上に表示されてしまいます。00:00と表示しないようにするには何か構文を足せばよいのでしょうか・・?次から次へ質問ばかりですいませんです。
よろしくお願いいたします。
|
|