Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6589 / 76734 ←次へ | 前へ→

【75745】Re:時間表示
お礼  yoyo  - 14/6/25(水) 22:30 -

引用なし
パスワード
   ▼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で宣言しておりテキストボックスにて発生しておりました。
記載して頂いたように変更すると改善されました。
ありがとうございました。

10 hits

【75741】時間表示 yoyo 14/6/25(水) 12:57 質問
【75742】Re:時間表示 γ 14/6/25(水) 20:25 回答
【75744】Re:時間表示 yoyo 14/6/25(水) 22:27 お礼
【75743】Re:時間表示 ichinose 14/6/25(水) 20:57 発言
【75745】Re:時間表示 yoyo 14/6/25(水) 22:30 お礼

6589 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free