- ベストアンサー
時間をvbaでセルに1:00と入力する場合
セルにvbaで時間として、1:00と入れたいのですが、 Range("A2") = #1:00# とすると、自動で Range("A2") = #1:00:00 AM# になってしまい、実際にセルにも「1:00:00 AM」と入力されてしまいます。 そもそもvba上で時間をコードとして打つ場合は、#で囲うでいいんですよね? 時間をvbaでセルに1:00と入力する場合は、どうすればいいですか?
- みんなの回答 (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 '//
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
通常はふつーに range("D2") = "1:0" で十分です もちろんtimeserial関数やtimevalue関数などを使って時刻を生成することもできます。 >実際にセルにも「1:00:00 AM」と入力されてしまいます いいえ、正しくはそうではなく、セルには「1:00:00」がしっかり入力されています。 ただしセルの書式設定の表示形式がそうなってるだけです。 セルの見た目じゃなく、数式バーで何が「入力されている」か、しっかり確認してください。 なので range("E2").numberformat = "h:mm" range("E2") = #1:00:00 AM# あるいは逆の順番などのようでも構わないことが分かります。
お礼
回答ありがとうございました。
お礼
回答ありがとうございました。