|
こんばんは。
>エクセルVBAのフォームで時間表示することで
>つまづいてます。
>
>エクセルのセルから値を取得しフォームで下記のように指定してます。
>nt = Format(nt, "hh:mm")
>基本、表示できているのですが値が12:00の時だけ
>思うような表示になりません。
このntを説明する記述がありませんね!!
このntが何なのか? の説明をしてくださいね。
質問者がご自分が分からないところまで閲覧者を導く記述をする
これ、よい訓練になりますよ!!
>
>nt=セルの値
>セルには12:00と入ってます。セルの書式は[h]:mmで
>値を取得した時は0.5と表示されます。
>ここまではいいのですが、nt = Format(nt, "hh:mm")にしたとたん
>00:05と表示されます。
>セルの値が12:01の時はちゃんと12:01表示されますが
>12:00の場合のみの症状です。
>何か原因があるのでしょうか?
この現象が発生する場合のntは、
ntがString型の変数
ユーザーフォームという記述がありますから、
ntがテキストボックスコントロールの場合などこのような現象が
おこりますね!!
仮にntが文字列型変数の場合
sub test()
dim nt as string
nt=range("a1").value 'セルa1に12:00という時刻が入っているとすると
'ntは、0.5という文字列が格納されます。0.5という数値ではありません。
'困ったことに 文字列0.5は、0時5分と解釈してしまいます。よって、
'記述されたような現象が発生します。ntがテキストボックスの場合も
'同じです。
msgbox format(nt,"hh:mm")
End sub
セルA1に6:00という時刻が入力されていても同じような現象が発生します
はっきり時刻型に変換してあげましょう
sub test2()
dim nt as string
nt=cdate(range("a1").value)
nt=format(nt,"hh:mm")
msgbox nt
end sub
|
|