サイトについて      連絡先   検索

VBA 文字列を変換

はじめに

Excel VBA の 文字列 (String) を変換する方法を紹介します。

文字列の大文字と小文字、全角と半角などの変換をするには「StrConv 関数」を使用します。

文字列を数値に変換をするには「Val 関数」を使用します。

文字列を日付に変換をするには「CDate 関数」を使用します。

大文字を小文字へ変換

文字列を「大文字と小文字」、「全角と半角」、「ひらがなとカタカナ」などに変換するには「StrConv 関数」を使用します。引数には (文字列, 変換) を渡します。

変換には次の種類があります。


Dim s As String
s = StrConv("abc", vbUpperCase) ' 大文字へ
Debug.Print (s) ' ABC

s = StrConv("abc def", vbProperCase) ' 先頭を大文字へ
Debug.Print (s) ' Abc Def

s = StrConv("ABC", vbWide) ' 全角へ
Debug.Print (s) ' ABC

s = StrConv("あいう", vbKatakana) ' カタカナへ
Debug.Print (s) ' アイウ

文字列を数値へ変換

VBA では数値型へ数字を入れると自動的に変換されます。


Dim i As Integer
i = "123"
Debug.Print (i) ' 123

明示的に文字列を数値に変換するには「Val 関数」を使用します。引数には (文字列) を渡します。

数値に変換できないときは 0 を返します。先頭の文字が数字ならそれを変換します。


Dim i As Integer
i = Val("123")
Debug.Print (i) ' 123

i = Val("あいう123")
Debug.Print (i) ' 0

i = Val("123あいう")
Debug.Print (i) ' 123

指定した数値型 (Integer など) へ変換するには「CInt 関数」を使用します。


Dim i As Integer
i = CInt("123")
Debug.Print (i) ' 123

Dim l As Long
l = CLng("123")
Debug.Print (l) ' 123

i = CInt("123あいう") ' エラー

この方法では、変換できない値を変換したときにエラーになります。「IsNumeric 関数」で変換できるか判定できます。

IsNumeric 関数」の戻り値が True のときは数値に変換できます。


Dim s As String
s = "123あいう"
Dim i As Integer

If IsNumeric(s) = True Then
    ' 変換できるときのみ数値にする
    i = CInt(s)
    Debug.Print (i)
End If

文字列を日付に変換

VBA では日付型へ日付や時刻の形式の文字列を入れると、自動的に変換されます。


Dim d As Date
d = "2013/1/31"
Debug.Print (d) ' 2013/01/31

d = "1:2:3"
Debug.Print (d) ' 1:02:03

d = "2013/1/31 1:2:3"
Debug.Print (d) ' 2013/01/31 1:02:03 

明示的に日付型へ変換するには「CDate 関数」を使用します。


Dim d As Date
d = CDate("2013/1/31")
Debug.Print (d) ' 2013/01/31

d = CDate("一月三十一日") ' エラー

この方法では、変換できない値を変換したときにエラーになります。「IsDate 関数」で変換できるか判定できます。

IsDate 関数」の戻り値が True のときは日付に変換できます。


Dim s As String
s = "一月三十一日"
Dim d As Date

If IsDate(s) = True Then
    ' 変換できるときのみ日付にする
    d = CDate(s)
    Debug.Print (d)
End If

関連ページ