質問させていただきます。
例えば、ちょうど午後7時00分00秒になったら絵を変える・・など、
きっちり何時0分0秒の時に何らかの動作をさせるプログラムを作りました。
プログラムは以下の通りです。
Jikan = Mid(Time, 2, 1)
If Jikan = ":" Then
Jikan = Mid(Time, 1, 1)
hun1 = Mid(Time, 3, 1)
hun2 = Mid(Time, 4, 1)
Byou1 = Mid(Time, 6, 1)
Byou2 = Mid(Time, 7, 1)
If hun1 = 0 And hun2 = 0 And Byou1 = 0 And Byou2 = 0 Then
'ここに、00分00秒になったときの処理
End If
Else
Jikan = Mid(Time, 1, 2)
hun1 = Mid(Time, 4, 1)
hun2 = Mid(Time, 5, 1)
Byou1 = Mid(Time, 7, 1)
Byou2 = Mid(Time, 8, 1)
If hun1 = 0 And hun2 = 0 And Byou1 = 0 And Byou2 = 0 Then
'ここに、00分00秒になったときの処理
End If
End If
jikanはstring、他はinteger型で宣言しました。
ところが、
windowsXPにてエラーが出る場合と、XPでも正常に動く場合があるという
二つの報告を受けました。
このエラーはパソコンの時刻設定に関係するものなのでしょうか?
それとも、プログラム上のミスなのでしょうか?
どなたかご教示お願いいたします。
> Jikan = Mid(Time, 2, 1)
Time ( Date 型)を String 型に暗黙的に変換した時の書式は
コンパネの地域のプロパティの設定によって、異なります。
それなので、明示的に Format 関数を使用して変換するようにしましょう。
Jikan = Mid(Format(Time, "hh:nn:ss"), 2, 1)
こんな感じ?
でも、この場合は
Hour(), Minute(), Second() 関数を使えばよさそうですが...
あるいは、こんな感じですか。
If Format(Time, "nnss") = "0000" Then
'* 0分0秒の時の処理
End If
>このエラーはパソコンの時刻設定に関係するものなのでしょうか?
>それとも、プログラム上のミスなのでしょうか?
パソコンの時間設定、サービスパックの適用状況に関係し、
とろさんの言うと降り、Format関数を使っていないと言う点では、
プログラム上のミスとまでは言いませんが、品質を求める上では危険です。
とろさん>
なるほど・・地域のプロパティの設定によって、違うのですね。
format関数を使って明示的に宣言する方法、ありがとうございました。
そして、おっしゃるとおりhour()などを使って同じ事が実現できました。
重ね重ね、ありがとうございました。
無案さん>
そうですね、環境に左右されてしまうと
のちのち困ることになってしまうんですね。
ご意見、とても参考になりました。ありがとうございました。
お二人とも本当にありがとうございました。
ツイート | ![]() |