|
▼ichinose さん:
>こんばんは。
>
>>エクセル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
ichinose様
ご回答ありがとうございました。
また、わかりにくい文章で申し訳ありませんでした。
発生していた状況はまさにichinose様の予測通りで
変数はstringで宣言しておりテキストボックスにて発生しておりました。
記載して頂いたように変更すると改善されました。
ありがとうございました。
|
|