Excel VBA質問箱 IV

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

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


6591 / 76734 ←次へ | 前へ→

【75743】Re:時間表示
発言  ichinose  - 14/6/25(水) 20:57 -

引用なし
パスワード
   こんばんは。

>エクセル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
11 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 お礼

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