• ベストアンサー

エクセルで時間セルをVBで文字列として取り込むには

エクセルです。 時間セルがあって、エクセル上での表示では 12:30:15 という風に表示するようにセルの書式設定でしているのですが、そのセルを VBで取り出そうとして、 A = Cells( 1,1 ) とかってすると、Aには、0.66656 とかって数字が入ってきてしまいます。 Aは文字列として、DIM A as String とかってしているのですけどね これをちゃんとAに、12:30:15 という形の文字列として入れるのにはどうしたらいいのでしょか

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

A = Cells( 1,1 ).text のように。

chachakabu
質問者

お礼

ありがとうございました。 これが一番簡単ですぐに出来ました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 「12:30:15」という表示はあくまで見た目で、実際は「0.520・・・」といった数値になります。 すなわち文字列にしても「0.520・・・」という数値が文字列扱いになるだけです。 そこで一案です。 せっかくシリアル値なのでわざわざ文字列に!といった操作をせずに 表示したいセルの表示形式を変えてみてはどうでしょうか? A1セルのデータをB1セルに表示するとします。 With Cells(1, 2) .Value = Cells(1, 1) .NumberFormatLocal = "h:m:s" End With といった感じで・・・ 参考になれば良いのですが。m(_ _)m

chachakabu
質問者

お礼

お世話になります。 そういう方法もあるのですね。 でも、1つでいいところを2箇所のセルを使うことになりますね。 今後使うこともあるかも知れません。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルの日付・時刻シリアル値のことを勉強してない。 それでは、VBAをやるというのに、もっと基礎を勉強しないと早すぎる。 日付時刻シリアル値は「日付時刻の表示形式で、時刻なりに見えている。それを文字列にするにはFormat関数を「使えば良い。 例データ A列  B列 12:35:20 12時35分20秒 14時35分20秒 14時35分20秒 11:26:00 AM 11時26分00秒 13:24:50 13時24分50秒 11:25:50 11時25分50秒 ーー 標準モジュールに Sub test03() For i = 1 To 5 Cells(i, "B").ClearFormats Cells(i, "B") = Format(Cells(i, "A"), "hh時mm分ss秒") Next i End Sub

chachakabu
質問者

お礼

別に日付や時刻のことを知らなくてもいくらでもVBくらいできるでしょ。 いい加減な適当な書き込みはみんなの迷惑ですから、書き込まないように。