Home » ExcelVBA Rangeオブジェクト » 表示形式 » VBAで2桁の日付をセルに入力する

VBAで2桁の日付をセルに入力する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

VBA(Visual Basic for Applications)のFormat関数を使うと、日付データの日付部分を2桁の書式にした文字列を取得できることをご紹介しました。

「Format(ActiveCell.Value, "dd")」といったコードで、アクティブセルに入力されている日付データの日付部分だけをdd形式の2桁の文字列として取得できますが、この2桁の文字列をセルに代入する場合、考えるべきことが増えます。

[スポンサードリンク]

2桁の日付をセルに入力しようとして上手く動かないサンプルマクロ

例えば「2017/5/5」という日付データの入力されたセルがアクティブなときに、書式設定が初期状態である右隣のセルに、「05」という2桁の日付が入力されることを期待して以下のSubプロシージャを実行すると、「5」が入力されてしまいます。


Sub 日付部分を取得して右隣のセルへ_ダメな例()
 ActiveCell.Offset(0, 1).Value = Format(ActiveCell.Value, "dd")
End Sub

Excelでは、書式を設定していないセルに、ハイフンなしの電話番号を市外局番から入力したようなときには、先頭の「0」がなくなってしまいます。

同じことが起きたわけです。

表計算ソフトであるExcelは、数値とみなし得る文字列は自動的に数値と判断します。
このExcelの仕様は、VBAからセルにデータを入力する際も関係します。

2桁の日付をセルに入力するサンプルマクロ

以下のようなSubプロシージャにすればアクティブなセルの右隣のセルに、アクティブセルの日付データの日付部分だけを2桁にした文字列を入力できます。


Sub 日付部分を取得して右隣のセルへ()
 ActiveCell.Offset(0, 1).NumberFormatLocal = "@"
 ActiveCell.Offset(0, 1).Value = Format(ActiveCell.Value, "dd")
End Sub

先頭についた数字の「0」を残すためには、[セルの書式設定]ダイアログなどで

VBAで2桁の日付をセルに入力する

文字列書式を設定します。

VBAから操作する場合も同じことです。

RangeオブジェクトのNumberFormatLocalプロパティに、「@」(アットマーク)を指定しておけば、文字列書式が設定されて、Format関数で返された「05」のような文字列をそのまま入力できます。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 表示形式 » VBAで2桁の日付をセルに入力する

TrackBack:0

TrackBack URL

Home » ExcelVBA Rangeオブジェクト » 表示形式 » VBAで2桁の日付をセルに入力する

Copyright © インストラクターのネタ帳 All Rights Reserved.

.