本日の購入でポイント最大7倍還元中!

Excel VBAで0埋め(ゼロパディング、ゼロフィル)する方法|できないときの対処法

2 min
Excel vba 0埋め ゼロパティング ゼロフィル

この記事ではタイトルの通り、以下の2点を紹介します。

  • VBAを使って、任意のセルの値を0埋め(ゼロパディング・ゼロフィル)する方法
  • よく見るFormat関数を使っても、なぜか0埋めできないときの対処法
えいじまん
VBAを使った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埋めできません。

Worksheets(“Sheet1”).Range(“A1”).Value = Format(Worksheets(“Sheet1”).Range(“A1″).Value,”000”)

これを実行しても、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=”@”を指定しているかをチェックしてみてくださいね。

えいじまん
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埋めできませんので注意しましょう。

SEパパ

SEパパ

外資系IT企業SE職で2児の父ちゃん!職業柄かリサーチ&問題解決が好き。幅広いジャンルで「お悩み解決」記事を執筆中。月間最高24万PV。雑誌掲載。

読者様に役立つ情報提供を心がけています。

カテゴリー:
関連記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA