VBAで0を埋めて桁数を揃える方法|初心者でも簡単に作れるマクロ

VBA

「社員番号が0から始まるから先頭に0を付けたい」
「桁数をそろえるために0で埋めたい」

上記のような疑問を解決します!
この記事を読むと、0埋めするマクロが自分で作れるようになります。

VBAで0を埋めて桁数をそろえる方法

VBAを使うと、先頭に0を付ける、桁数をそろえるために0埋めする、ということができます。
方法は2通りありますので、この章ではそれぞれ紹介します。

「’」を先頭につける

0埋めをする1つ目の方法は、「’」(クォーテーション)を先頭につけることです。
「’」を付けると、文字列として先頭の0も表示できるようになります。
例えば、1を前に0を付けて3桁にしてセルA1に表示するVBAは以下の通りです。

Sub zeroume1()

Range("A1") = Format(1, "'000")

End Sub

Format関数を使うと、表示したい数字と桁数を指定することができます。
今回は1を3桁表示したので、後半のダブルクォーテーションで「’000」を囲っています。
Format関数は他にも日付や時刻、さまざまな形式の表示方法を指定できる関数です。
これが1番簡単に0を付ける方法ですが、データとして扱うには「’」がエラーの原因になる場合があります。
社員番号の桁数をそろえよう、という程度であれば十分ですが、そうでない場合は次の方法を使いましょう。

書式設定で桁数を指定する

VBAで書式設定を指定することでも0埋めができます。
「NumberFormatLocal」を使えば桁数の指定ができます。
先ほどと同じく、1を3桁にしてセルA1に表示させてみましょう。
VBAは以下の通りです。

Sub zeroume2()

Range("A1").NumberFormatLocal = "000"
Range("A1") = 1

End Sub

「NumberFormatLocal = “000”」は、0が3つ並んでいるので、数字を3桁表示の書式設定にします。
「’」などの記号が入っていないので、計算等にも数字として使うことができます。
3桁表示だけでなく、例えば5桁なら0を5つ、10桁なら0を10個並べましょう。
他にもよく使う書式設定をいくつか紹介します。

@文字列
#,##0金額
0%割合
yyyy/mm/dd年月日(西暦)
hh:mm:ss時刻(秒単位まで)

まだまだたくさんあり、セルの書式設定と同じように設定することができます。

0埋めして右揃えにする方法

「NumberFormatLocal」を使って桁数を指定すると数字のままなので、基本的には右寄せ表示になっているはずです。
しかし、右寄せになっていないという場合には、右に詰めるようVBAで指定しておくと良いです。

Sub zeroume3()

Range("A1").NumberFormatLocal = "000"
Range("A1") = 1
Range("A1").HorizontalAlignment = xlRight

End Sub

「HorizontalAlignment = xlRight」で右寄せにしています。
他にも「xlLeft」で左寄せ、「xlCenter」で中央寄せにすることができます。
また、上記のようなコードだと「Range(“A1”)」が何度も出てくるので、Withでまとめてしまいましょう。

Sub zeroume3()

With Range("A1")
    .NumberFormatLocal = "000"
    .Value = 1
    .HorizontalAlignment = xlRight
End With

End Sub

まとめ

この記事を読んでいただきありがとうございます。
VBAで0埋めをする方法はわかったでしょうか。
勉強し始めたころは、すべて調べていかないと、わからないことだらけで大変ですよね。
今まさに頑張っているみなさまに「わかりやすかった」と思っていただけると嬉しいです。

コメント

Copied title and URL