VBA の文字列を変換するサンプルです。Excel、Accessとも同じです。
目次
サンプル | 数値を文字列にする(CStr) |
文字列を数値にする(CInt) | |
文字を変換する(StrConv) |
数値を文字列にする(CStr)
CStr(値) |
Sub test1()
Dim a As Integer
a = 100
b = CStr(a)
Debug.Print (b) ' 100
Debug.Print (VarType(b)) ' 8 String
Dim c As Long
c = 100
D = CStr(c)
Debug.Print (D) ' 100
Debug.Print (VarType(b)) ' 8 String
End Sub
6,13行目は、CStr関数で数値を文字列にしています。
VarTypeはデータ型を調べる関数です。
文字列を数値にする(CInt/CLng)
CInt(値) |
CLng(値) |
Sub test1()
Dim a As String
a = "100"
b = CInt(a)
Debug.Print (b) ' 100
Debug.Print (VarType(b)) ' 2 Integer
c = CLng(a)
Debug.Print (c) ' 100
Debug.Print (VarType(c)) ' 3 Long
End Sub
6行目は、CInt関数で文字列をInteger型にしています。
10行目は、CLng関数で文字列をLong型にしています。
VarTypeはデータ型を調べる関数です。
文字を変換する(StrConv)
StrConv(文字列, 定数または数値) |
- StrConv関数は、文字を変換します。
- 2つめの引数は、定数または数値どちらでも可です。
→定数のほうが意味がわかるので推奨です。 - 以下は、MicrosoftのStrConv関数のリンクです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/strconv-function
定数 | 数値 | 説明 |
---|---|---|
vbUpperCase | 1 | 大文字に変換します。 |
vbLowerCase | 2 | 小文字に変換します。 |
vbProperCase | 3 | 最初の文字を大文字に変換します。 |
vbWide | 4 | 半角 (1 バイト) 文字を全角 (2 バイト) 文字に変換します。 |
vbNarrow | 8 | 全角 (2 バイト) 文字を半角 (1 バイト) 文字に変換します。 |
vbKatakana | 16 | ひらがなをカタカナに変換します。 |
vbHiragana | 32 | カタカナをひらがなに変換します。 |
vbUnicode | 64 | 文字列をUnicodeに変換します。 (Macintoshでは使用不可。) |
vbFromUnicode | 128 | 文字列をUnicodeからシステムの既定の文字コードに変換します。 (Macintoshでは使用不可。) |
文字を変換するサンプルです。
Sub test1()
' 1 大文字に変換
Dim a As String
a = "abc"
Debug.Print StrConv(a, vbUpperCase) 'ABC
' 2 小文字に変換
Dim b As String
b = "ABC"
Debug.Print StrConv(b, vbLowerCase) 'abc
' 3 最初の文字を大文字に変換
Dim c As String
c = "abc def ghi"
Debug.Print StrConv(c, vbProperCase) 'Abc Def Ghi
' 4 半角文字を全角文字に変換
Dim d As String
d = "abc ABC あ"
Debug.Print StrConv(d, vbWide) 'abc ABC あ
' 8 全角文字を半角文字に変換
Dim e As String
e = "abc ABC あ"
Debug.Print StrConv(e, vbNarrow) 'abc ABC あ
' 16 ひらがなをカタカナに変換
Dim f As String
f = "あいう"
Debug.Print StrConv(f, vbKatakana) 'アイウ
' 32 カタカナをひらがなに変換
Dim g As String
g = "アイウ"
Debug.Print StrConv(g, vbHiragana) 'あいう
'128 文字列をUnicodeからShift-JIS
Dim h As String
h = "abc"
Debug.Print LenB(h) '6 'バイト数は3ではなく6になる
'vbFromUnicodeを使用
Debug.Print LenB(StrConv(a, vbFromUnicode)) '3
End Sub
41行目のLenB関数は文字列のバイト数を表示します。
文字列は、半角英字3文字ですが6バイトと表示されます。
44行目でUnicodeからShift-JISに変換しLenB関数を実行すると3バイトになります。
関連の記事
VBA 文字列を切り出す(Left/Mid/Right)
Excel VBA 文字列を切り出す(Left/Mid/Right)
VBA Len/LenB 文字列の長さを取得する
VBA 大文字と小文字を変換(UCase/LCase)