この記事ではタイトルの通り、以下の2点を紹介します。
- VBAを使って、任意のセルの値を0埋め(ゼロパディング・ゼロフィル)する方法
- よく見るFormat関数を使っても、なぜか0埋めできないときの対処法
クリックできる目次
VBAで0埋め(ゼロパディング・ゼロフィル)する方法
Format関数を使います。
例えば、Sheet1のA1(1,1)の値を3桁で0埋めする場合は、次のように記述します。
Rangeで指定する場合↓
Worksheets(“Sheet1”).Range(“A1″).NumberFormatLocal=”@”
Worksheets(“Sheet1”).Range(“A1”).Value = Format(Worksheets(“Sheet1”).Range(“A1″).Value,”000”)
Cellsで指定する場合↓
Worksheets(“Sheet1″).Cells(1, 1).NumberFormatLocal=”@”
Worksheets(“Sheet1”).Cells(1, 1).Value = Format(Worksheets(“Sheet1″).Cells(1, 1).Value,”000”)
実行結果は↓のようになります。
→
VBA(Format関数)で0埋めするときの注意点
よく以下のようなコードを見かけます。
Worksheets(“Sheet1”).Range(“A1”).Value = Format(Worksheets(“Sheet1”).Range(“A1″).Value,”‘000”)
Format関数の第二引数をよく見ると、”‘000″(シングルクォーテーションが含まれている)
これの何が問題なのか?というと、これを実行すると次のように’が付加されてしまうのです。
例えば、VBAで0埋めしたあとに、別システムにこのExcelを取り込むなどする場合は、このシングルクォーテーションが問題ないかの確認が必要です。
VBA(Format関数)で0埋めできないときの対処法
次のコードを実行した場合は、0埋めできません。
これを実行しても、A1セルの値は何も変化しません。
NumberFormatLocal=”@”を追加して、次のようにコードを記述する必要があります。
Worksheets(“Sheet1”).Range(“A1″).NumberFormatLocal=”@”
Worksheets(“Sheet1”).Range(“A1”).Value = Format(Worksheets(“Sheet1”).Range(“A1″).Value,”000”)
このコードを実行すれば、3桁の0埋め(ゼロパディング・ゼロフィル)することができますよ。
もしExcelのVBAでFormat関数を使っても、なぜか0埋めできない!
という方は、NumberFormatLocal=”@”を指定しているかをチェックしてみてくださいね。
VBAで0埋めする方法・できない対処法まとめ
Format関数を使って、3桁の0埋め(ゼロパディング・ゼロフィル)する場合は、次のように記述すればOKです。
Worksheets(“Sheet1”).Range(“A1″).NumberFormatLocal=”@”
Worksheets(“Sheet1”).Range(“A1”).Value = Format(Worksheets(“Sheet1”).Range(“A1″).Value,”000”)
※NumberFormatLocal=”@”を指定していない場合は、0埋めできませんので注意しましょう。