「社員番号が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埋めをする方法はわかったでしょうか。
勉強し始めたころは、すべて調べていかないと、わからないことだらけで大変ですよね。
今まさに頑張っているみなさまに「わかりやすかった」と思っていただけると嬉しいです。


コメント