• ベストアンサー

Excel2007VBA時間の書式とLen関数

●質問の主旨 文字列の長さを返すLen関数の引数に 時間を設定すると戻り値が一定しないのはなぜでしょうか? また下記に示すように20や17などの数字がかえってくるの でしょうか? ●質問の補足 A1セルに入力されている時間が以下の通りだとします。 例1)1:11→20 例2)13:59→17 ●コード Sub test() Dim i as String i=Range("A1") Msgbox Len(i) End Sub 以上よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

#2です。 回答してから気が付きましたが、 「これを「5.82638888888889E-01」としないのは、『Excelの仕様なのでしょう。』」 ↓ 「・・・・『浮動小数点数のメモリへの格納の仕方からそうなるのでしょう。』」 に訂正してください。

dradra33
質問者

お礼

okormazd様 たびたびのご丁寧な説明ありがとうございます

その他の回答 (2)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

「1:11」というのは、セルの表示形式であって、実際に格納されているのは、有効数字15桁のシリアル値です。 したがって、 「1:11」が1時11分とすれば、「0.0493055555555556」がシリアル値です。これは、頭からだと18桁になるが、Excelでは有効数字15桁として格納するので、「4.93055555555556E-02」になる。この文字数が20です。 「13:59」は、「0.582638888888889」で、文字数は17です。 これを「5.82638888888889E-01」としないのは、Excelの仕様なのでしょう。 もし、時刻表示の文字数がほしいなら、 i = Format(Range("A1").Value, "h:m") などとすればいい。

dradra33
質問者

お礼

okormazd様 ご回答ありがとうございます。 上記のアドバイス参考にさせていただきます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

時間の入っているセルに対してLen関数を使うことのメリットがよくわかりませんが、単にLen関数を使った場合には時間で表示されているセルの表示形式を標準にしますと小数点以下の数値が表示されますね。その文字列の長さを求めることになります。セルの表示形式を関数で指定したうえでLen関数を使えばよ良いのですがLen関数を使うことの意義がよく理解できませんね。

dradra33
質問者

お礼

KURUMITO様 ご回答ありがとうございます。 私の質問の意図は時間形式「h:mm」の表示形式について 一定の規則性を見つけたかったからです。 ・「h:mm」の文字列の長さ ・「:」(半角セミコロン)の位置 等に規則性があるのではないかと考えていました。

関連するQ&A