• ベストアンサー

時間の計算

下記にあります、 「時間を入力するテキストボックス作成」の 続きです。 テキストボックスA、Bと ラベルCがあるとします。 テキストボックスAとBには時間(形式はh:mm)が 入っていて、そのテキストボックスAとBの差を ラベルCに出したいのですが、下記の例の ようにするには、どのようにすれば良いでしょうか? 例: テキストボックスAに「9:00」、 テキストボックスBに「11:45」と 入ったら、ラベルCには「2:75」と出力される

質問者が選んだベストアンサー

  • ベストアンサー
  • josyo_m
  • ベストアンサー率63% (28/44)
回答No.4

お疲れ様です。 すみません、#3を少し訂正します。 #3では"2.00"等に対応していませんでした。 例) Text1.Text = "9:00" Text2.Text = "11:00" Label1.Caption = Replace(Format$(Hour(Text2.Text) - Hour(Text1.Text) + (Minute(Text2.Text) - Minute(Text1.Text)) / 60, "0.00"), ".", ":") まだ計算が違うようでしたら補足お願いします。 間違っていたらごめんなさい。

su-ta
質問者

お礼

>回答者の方へ ありがとうございました。 解決出来ました!

その他の回答 (3)

  • josyo_m
  • ベストアンサー率63% (28/44)
回答No.3

お疲れ様です。 再度、お邪魔します^^ 結果が、"2:75"と欲しいのであれば、これでは駄目でしょうか? 例) Text1.Text = "9:00" Text2.Text = "11:45" Label1.Caption = Replace(Hour(Text2.Text) - Hour(Text1.Text) + (Minute(Text2.Text) - Minute(Text1.Text)) / 60, ".", ":") お礼で書かれているのを少し変えただけです^^ 間違っていたらごめんなさい

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Form1にText1,Text2,Commnd1を貼り付け、Command1の クリックイベントに(質問ではLabelですが大して変わらない) Private Sub Command1_Click() ' Text1.Text = "9:15" ' Text2.Text = "11:45" '----- l1 = Len(Text1.Text) p = InStr(Text1.Text, ":") h1 = Mid(Text1.Text, 1, p - 1) m1 = Mid(Text1.Text, p + 1, l1 - p) t1 = TimeSerial(h1, m1, 0) '----- l2 = Len(Text2.Text) p = InStr(Text2.Text, ":") h2 = Mid(Text2.Text, 1, p - 1) m2 = Mid(Text2.Text, p + 1, l2 - p) t2 = TimeSerial(h2, m2, 0) '------ t3 = Format(t2 - t1, "hh:mm") Command1.Caption = t3 End Sub 少数例でテスト済み。

  • josyo_m
  • ベストアンサー率63% (28/44)
回答No.1

お疲れ様です。 こんな感じでよいでしょうか? 例) Text1.Text = "9:00" Text2.Text = "11:45" Label1.Caption = Format$(CDate(Text1.Text) - CDate(Text2.Text), "H:NN") 間違っていたらごめんなさい。

su-ta
質問者

お礼

回答ありがとうございます。 josyo_mさんのソースでやってみましたが、 計算が違ってしまいました。 (責めている訳ではありませんので、誤解しないでくださいね) この処理は、以前Excelのセルでやっていたのですが、 その時の計算式はこんな感じでした。 Hour(Text2.Text - Text1.Text) + Minute(Text2.Text - Text1.Text) / 60 こうすると、Text2が11:45、1が9:00の時、2.75と 計算されます。 これを別の箇所に"h:mm"の形で出せれば良いのですが。

関連するQ&A