Access

VBAで数値と文字列を操作する便利な関数

Access数字と文字列
記事内に商品プロモーションを含む場合があります

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を取得できます。

\逆引き辞書があると便利です/
[itemlink post_id=”1386″]

ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。