【VBAリファレンス|実務向け】Lesson27:日付と時刻・記号と特殊記号をVBAで自在に操るテクニック

スポンサーリンク

皆さん、こんにちは。VBA講師の現場視点ブログへようこそ。今回は実務で意外とつまずきやすい「日付・時刻」の自動入力と、コード内で扱う「特殊記号」の処理について解説します。

なぜセル入力で「日付」がずれるのか?

実務で最も多いミスは、Date関数やNow関数をそのままセルに代入してしまい、表示形式が崩れるケースです。VBAでは、セルのNumberFormatLocalプロパティを必ずセットで記述する癖をつけましょう。

例えば、本日日付を「yyyy年mm月dd日」形式で入力する場合、単に値を入れるだけでなく、以下のように記述するのがプロの作法です。

Range(“A1”).Value = Date
Range(“A1”).NumberFormatLocal = “yyyy年mm月dd日”

こうすることで、セルの設定が標準であっても、どんな環境でも意図した形式で表示されます。

特殊記号をコードに書く際の落とし穴

次に、見積書や報告書でよく使う「①」「(株)」「×」などの記号です。これらはVBAのエディタ上で入力すると、環境によっては文字化けを起こすことがあります。

解決策として、ChrW関数を活用しましょう。これはUnicodeを指定して文字を呼び出す関数です。例えば、掛け算の記号「×」は以下のコードで確実に入力できます。

Range(“B1”).Value = ChrW(&H2715)

よく使う記号は、定数としてモジュールの先頭に定義しておくと、保守性が劇的に向上します。「定数として定義する」というひと手間が、後からコードを見返したときに大きな差を生みます。

実務現場での応用テクニック

最後に、私が現場で推奨しているのは「現在時刻のスタンプ」を作成する際、時刻だけを更新するテクニックです。ログを残す際、日付は固定で時刻だけを追記したい場合は、以下のように記述します。

Range(“C1”).Value = Format(Now, “hh:mm:ss”)

この際、Format関数を使うことで、セル側の設定に依存せず、文字列として正確な時刻を記録できます。

VBAは「動けば良い」ではなく「誰が見ても誤解なく、環境を選ばず動く」ことが重要です。今回紹介したNumberFormatLocalとChrW関数を使いこなし、ワンランク上の自動化を目指してください。次回は、さらに一歩進んだ「日付計算の自動化」についてお話しします。

タイトルとURLをコピーしました