• 締切済み

時間を差し引く

こんにちわ。VB、かなりの初心者です。 タイトルの通りある時間から分を差し引くプログラムを作成しているのですが、効率のいい方法が見つかりません。 例えば、12:03から30分だけ時間を差し引くというプログラムです。 今は、時間と分に分割して、分にマイナスが出れば時間を-1し、60分からマイナス分を差し引くという方法でやっています。上記の12:03から30分だけ時間を差し引くという例でしたら11:33が表示されます。 ただコードも長く見にくくなるので、効率のいい方法がないかなと質問させていただきました。 よろしくお願いします。

みんなの回答

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.3

こんなのはどうでしょう? Dim intHH As Integer Dim intMM As Integer Dim intSS As Integer Dim TimeX As Date Dim TimeY As Date '現在の時間をセット TimeX = Now() '差し引く時間をセット intHH=1 intMM=30 intSS=10 '計算 TimeY = TimeSerial(Hour(TimeX) - intHH , _ Minute(TimeX) - intMM, _ Second(TimeX) - intSS) '結果の表示 MsgBox Format$(TimeY, "HH:MM:SS")

回答No.2

DateAdd 関数

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

エクセルVBAでテストしましたが、 Sub test01() Cells(1, 4) = Cells(1, 1) - #12:30:00 AM# End Sub A1に12:03 B1に0:30 でD1に11:33 となりました。以上はエクセルVBAの場合ですが、 このように日付や時刻をシリアル値で持つのは、VBでもVBAでも同じと思います。この方式をとる結果、最大の メリットは、日付や時刻の、引き算や足し算の表現のシンプルさに現れます。 (1)コンスタント30分で引く(時刻も#で囲むと旨く行くようです。) (2)30分と言う時刻値の入った変数で引く でやってみてください。 本回答が大きな間違いをしていないことを祈りつつ。

関連するQ&A