VBAで数字を文字列に変換する際に便利な関数をあれこれご紹介します。
目次
数字に0パディングして桁数を合わせて文字列変換する
Format関数を利用して整形する
Format関数を使って、指定した形式に整形する方法です。最もポピュラーな方法かと思います。
'
' 数字に0パディングして3桁表示に整える
'
Private Function Format_Num(cnt As Integer)
Dim StrCnt As String
StrCnt = Format(cnt, "000")
MsgBox "文字列=" & StrCnt
End Function
ちなみに、cntに3桁以上(1000以上)の数値を指定してもエラーにはなりません。
引数の値がそのまま文字列となります。
日付の月や日の場合
'
' 日付のFormat関数利用
'
Private Function Format_Date(wkDate As Date)
Dim StrDate As String
StrDate = Format(wkDate, "mm")
MsgBox "文字列=" & StrDate
End Function
日付型の場合は、第二引数に”mm”とすることで、1月~9月までの場合、01~09の形式でデータを整形することができます。
文字列から数値のみ取得する
単位がついた文字列から値のみ取り出したいときに便利です。
(例)1,000円→1000
Val()関数を使うことで文字列から数字のみ取り出すことができますが、いくつか難点があります。
文字列の途中に数値以外の文字があった場合は、以降の文字は取得できません。
もはや数字の表現の1つであるカンマ(,)も文字とみなすため、Val(“1,000”)では戻り値は1です。
'
' 文字列から数値のみ取得
'
Private Function GetOnlyNum(MixString As String)
Dim NumString As String
NumString = Val(MixString)
MsgBox "文字列=" & NumString
NumString = Val(Replace(MixString, ",", ""))
MsgBox "文字列=" & NumString
End Function
上記の例では、2回目のVal()関数で、先にReplace()関数を使ってカンマ(,)を消しています。
これで1000を取得できます。
コメント