ハマっている「お菓子」を教えて!

セルにvbaで時間として、1:00と入れたいのですが、
Range("A2") = #1:00#
とすると、自動で
Range("A2") = #1:00:00 AM#
になってしまい、実際にセルにも「1:00:00 AM」と入力されてしまいます。

そもそもvba上で時間をコードとして打つ場合は、#で囲うでいいんですよね?

時間をvbaでセルに1:00と入力する場合は、どうすればいいですか?

A 回答 (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
'//
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/07/16 21:13

通常はふつーに


range("D2") = "1:0"
で十分です

もちろんtimeserial関数やtimevalue関数などを使って時刻を生成することもできます。



>実際にセルにも「1:00:00 AM」と入力されてしまいます

いいえ、正しくはそうではなく、セルには「1:00:00」がしっかり入力されています。
ただしセルの書式設定の表示形式がそうなってるだけです。
セルの見た目じゃなく、数式バーで何が「入力されている」か、しっかり確認してください。

なので
range("E2").numberformat = "h:mm"
range("E2") = #1:00:00 AM#
あるいは逆の順番などのようでも構わないことが分かります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/07/16 21:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A