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