数値を0埋めして桁数をそろえるコードを解説します。
数値の0埋めにはFormat関数を利用します。
0埋めした数値を変数に格納するコード
数値を0埋めして桁数をそろえるには、
Format関数を利用した以下のコードを実行します。
Dim 数値 As Long 数値 = 100 Dim 桁揃え数値 As String 桁揃え数値 = Format(数値, "00000") MsgBox 桁揃え数値 ' 00100が表示されます。
Format関数はシート関数「TEXT」とほぼ同じ動きをする関数で、
書式に「"00000"」を適用すれば5桁の数値を文字列として取得できます。
注意点として、桁揃え後の値を格納する変数はString型でなくてはいけません。
Dim 桁揃え数値 As Long ' ← これではダメ
Long型を使うこのコードでは「00100」が再び「100」に変換されてしまい、
桁揃え数値の中見も100のままになるため注意してください。
また、こちらのコードは6桁以上を渡すと6桁の数値を取得してしまいます。
6桁以上の数値をどう扱うかはやりたい処理によると思いますので、
適宜分岐を用意して対応してください。
If 数値 >= 100000 Then ~~ここに6桁を超えたときの対応 End If
0埋めした数値をセルに出力するコード
上記のコードを使えば数値を0埋めできるのですが、
これをただセルに出力するだけだと、再び0が消えて元の数値に戻ってしまいます。
これを防ぐには、以下のいずれかの方法を実行します。
- セルの書式を「文字列」にしてから出力する
- 値の先頭にシングルクォーテーション「'」を付けてから出力する
セルの書式を「文字列」にしてから出力する
例えばA列の数値を0埋めしたものをB列に出力する場合は、
以下のコードを実行します。
Dim ws処理シート As Worksheet Set ws処理シート = Worksheets("○○") ' B列の書式を文字列に ws処理シート.Columns("B").NumberFormatLocal = "@" ' B列にA列を0埋めした数値を出力 Dim R As Long For R = 2 To ws処理シート.Cells(ws処理シート.Rows.Count, 1).End(xlUp).Row ws処理シート.Cells(R, 2) = Format(ws処理シート.Cells(R, 1), "00000") Next
セルの表示書式を文字列にする場合は、
Rangeオブジェクトの.NumberFormatLocalプロパティを"@"にします。
セルの書式設定は列ごとにに統一されていた方が良いので、
VBAでも1セルずつではなく列ごと設定するのがおすすめです。
値の先頭にシングルクォーテーション「'」を付けてから出力する
続いてシングルクォーテーションを使用したコードがこちらです。
Dim ws処理シート As Worksheet Set ws処理シート = Worksheets("○○") ' B列にA列を0埋めした数値を出力 Dim R As Long For R = 2 To ws処理シート.Cells(ws処理シート.Rows.Count, 1).End(xlUp).Row ws処理シート.Cells(R, 2) = "'" & Format(ws処理シート.Cells(R, 1), "00000") Next
上記の通り、単に"'"を&で頭に付けただけのコードで実行できます。
どちらも一長一短がありますので、状況に応じて使い分けて下さい。