• ベストアンサー

時間をvbaでセルに1:00と入力する場合

セルにvbaで時間として、1:00と入れたいのですが、 Range("A2") = #1:00# とすると、自動で Range("A2") = #1:00:00 AM# になってしまい、実際にセルにも「1:00:00 AM」と入力されてしまいます。 そもそもvba上で時間をコードとして打つ場合は、#で囲うでいいんですよね? 時間をvbaでセルに1:00と入力する場合は、どうすればいいですか?

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

  • ベストアンサー
回答No.2

こんにちは。 >vba上で時間をコードとして打つ場合は、#で囲うでいいんですよね? リテラル値で直接入力することは、コーディング・ルール上ではお勧めしていません。 別にそれを無視しても、個人(プライベート)で入力する分には一向にかまわないけれども……。  #1:00:00 AM# '←リテラル値 というのは、Windowsの時間のデフォルトでしょうけれども、こんな風にします。 当たり前のことですが、予め、書式を整えておくか、セルの書式を変更するというのが前提です。 手抜きの入力はあまり関心しません。 '// Sub Test1()  Dim myDate As Date 'データ型を決めておく  myDate = TimeValue("1:30")  With Range("A1")   .NumberFormatLocal = "h:mm" 'Localにするのは、言語特有の場合があるから   .Value = myDate  End With End Sub '//

CLDMRESSNM
質問者

お礼

回答ありがとうございました。

その他の回答 (1)

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

通常はふつーに range("D2") = "1:0" で十分です もちろんtimeserial関数やtimevalue関数などを使って時刻を生成することもできます。 >実際にセルにも「1:00:00 AM」と入力されてしまいます いいえ、正しくはそうではなく、セルには「1:00:00」がしっかり入力されています。 ただしセルの書式設定の表示形式がそうなってるだけです。 セルの見た目じゃなく、数式バーで何が「入力されている」か、しっかり確認してください。 なので range("E2").numberformat = "h:mm" range("E2") = #1:00:00 AM# あるいは逆の順番などのようでも構わないことが分かります。

CLDMRESSNM
質問者

お礼

回答ありがとうございました。

関連するQ&A