■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#14940-0日付をまたいだTimer関数の使用yo2001-03-08(木) 14:42
     #14946-0RE#14940:日付をまたいだTimer関数の使用よねKEN2001-03-08(木) 19:31
     #14956-0RE#14946:日付をまたいだTimer関数の使用匿名149562001-03-09(金) 11:05
     #14957-0RE#14956:日付をまたいだTimer関数の使用よねKEN2001-03-09(金) 12:06
     #14961-0RE#14956:日付をまたいだTimer関数の使用ゆう(U)2001-03-09(金) 15:43
#14940-0
日付をまたいだTimer関数の使用
シリアル通信で受信タイマのようなものを作ったのですが、
タイマ作動中に日付をまたいだ場合、正しくなくなってし
まうのですが、どうしたら良いでしょう。

varStartTime = Timer
Do While Timer < varStartTime + 30
Loop
#14946-0
RE#14940:日付をまたいだTimer関数の使用
> シリアル通信で受信タイマのようなものを作ったのですが、
> タイマ作動中に日付をまたいだ場合、正しくなくなってし
> まうのですが、どうしたら良いでしょう。
Timerは次の日になれば0に戻りますから。
Now関数とDateDiff関数を使うといいでしょう。
#14956-0
RE#14946:日付をまたいだTimer関数の使用
> > シリアル通信で受信タイマのようなものを作ったのですが、
> > タイマ作動中に日付をまたいだ場合、正しくなくなってし
> > まうのですが、どうしたら良いでしょう。
> Timerは次の日になれば0に戻りますから。
> Now関数とDateDiff関数を使うといいでしょう。


以下のようなコードを記述してみましたが
nowの30秒後を求めるのに単純に30を
足すだけではだめみたいです。当然ですが。
実際30秒とはどんな値を足すのでしょうか。
ヘルプのどの個所にそのような内容って書いて
あるでしょうか。

Dim a, b, c

a = Now
b = Now + 30
c = DateDiff("s", a, b)
Do While DateDiff("s", a, b) < 30
  c = DateDiff("s", a, b)
  a = Now
Loop
#14957-0
RE#14956:日付をまたいだTimer関数の使用
> > > シリアル通信で受信タイマのようなものを作ったのですが、
> 以下のようなコードを記述してみましたが
> nowの30秒後を求めるのに単純に30を
> 足すだけではだめみたいです。当然ですが。
こんな感じです。

Dim oldnow As Date
    
oldnow = Now
    
Do Until DateDiff("s", oldnow, Now) > 5 ' 実験なので5秒
Loop

ちなみに、30足すと30日後という意味になっていると思います。
#14961-0
RE#14956:日付をまたいだTimer関数の使用
> Dim a, b, c
> 
> a = Now
> b = Now + 30
> c = DateDiff("s", a, b)
> Do While DateDiff("s", a, b) < 30
>   c = DateDiff("s", a, b)
>   a = Now
> Loop
わざわざ a に代入する意味がわかりませんが・・・

終了時間を求めておいて、なら・・・

サンプル)
Private Sub Command1_Click()
  Dim dtTemp As Date
  Dim strTemp As String

  dtTemp = DateAdd("s", 5, Now)
  Beep
  Do While dtTemp > Now
    strTemp = DateDiff("s", Now, dtTemp)
    If Command1.Caption <> strTemp Then
      Command1.Caption = strTemp
    End If
  Loop
  MsgBox "約5秒経過"
End Sub
でOKです。

この約5秒とは・・・

15:00:00直後の場合と15:00:01直前の00秒から
では5秒より4秒に近い場合がありますので、
「約」となります。
※Timer関数なら一応1/100単位なので、目的の
 間隔にあわせやすいでしょうが・・・


「Timer 関数」でも翌日ていどなら、60 * 60 * 24秒を
考慮した計算式のコードにしておけばOKでしょう。
※いつだったか せつら さんがReしてましたが・・・
 過去ログ保存庫のログをチェックしてみては?
このページと関連する記事:
#1966-0時間の計算のしかた1999-09-19(日) 21:45
#16342-0Do Loopの条件が実行されません2000-11-16(木) 22:05
#18600-0実行中の一時停止2000-03-27(月) 13:36
#599-2Timer関数について2003-12-25(木) 14:02
#12240-0コードのスタートについて1999-12-22(水) 13:01
#15533-0正確なウェイト2001-04-10(火) 23:55
#7547-0時間の足し算について2000-04-20(木) 16:01
#1791-0Timerの使い方が???です。1999-09-22(水) 23:32
#13392-0ストップウオッチ2000-12-13(水) 01:39
#1842-0VBでタイマをかけたいのですが1999-09-14(火) 16:14
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)