dポイントプレゼントキャンペーン実施中!

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

A 回答 (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")
    • good
    • 1

DateAdd 関数

    • good
    • 0

エクセル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分と言う時刻値の入った変数で引く
でやってみてください。
本回答が大きな間違いをしていないことを祈りつつ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!