皆さん、こんにちは。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関数を使いこなし、ワンランク上の自動化を目指してください。次回は、さらに一歩進んだ「日付計算の自動化」についてお話しします。
