VBAでよく使う文字列操作をまとめました。
直感的に分かりやすい関数名なので、何度か使えば関数を覚えられちゃいますよ。
検索
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Dim str1 As String Dim str2 As String Dim str3 As String Dim ret1 As Variant Dim ret2 As Variant '検索 str1 = "abc123def456" str2 = "3de" str3 = "345" ret1 = InStr(str1, str2) ret2 = InStr(str1, str3) MsgBox "「3de」を検索結果:" + CStr(ret1) _ + vbCrLf _ + "「345」を検索結果:" + CStr(ret2) |
まずは文字列の中に、指定の文字列があるか検索する関数「InStr」です。
ret = InStr(検索される文字列, 検索する文字列)
となります。
戻り値は、
文字列が見つかったら、文字列が見つかった位置(何文字目か。例なら6番目に見つかったので6が返る)
文字列が見つからなかったら0
その他、文字列がNullだったりした場合の戻り値もありますが、基本あり得ないので覚えなくていいです。
ただ、数値ではなくNullが返る場合もあるので、戻り値を受ける変数の型はVariant型にしておく必要があります。
文字列が見つかったら1以上、見つからなかったら0が返ってくる、と覚えてくださいね。

置換
1 2 3 4 5 |
'置換 str1 = "あいうえおかきくけこ" str2 = Replace(str1, "おか", "岡") MsgBox "置換結果:" + str2 |
文字列の一部を置換する場合は「Replace」関数を使います。
変換後の文字列 = Replace( 基の文字列 , 変換される文字列 , 変換する文字列 )

分割
1 2 3 4 5 6 7 8 9 |
'分割 str1 = "ab,cde,fghi,jklm" ret1 = Split(str1, ",") MsgBox "分割結果:" + vbCrLf _ + "ret1(0):" + ret1(0) + vbCrLf _ + "ret1(1):" + ret1(1) + vbCrLf _ + "ret1(2):" + ret1(2) + vbCrLf _ + "ret1(3):" + ret1(3) |
文字列を、ある指定の文字列で分割する場合は「split」関数を使います。
ret = Split( 基の文字列, 区切り文字)
戻り値は一次元配列として戻ってきます。
要素数が分からないので、これも戻り値を受ける変数はVariant型にしておく必要があります。
分割された文字列はret(0)から順に格納されています。

結合
1 2 3 4 5 6 |
'結合 str1 = "abc" str2 = "123" str3 = str1 + str2 MsgBox "結合結果:" + str3 |
文字列の結合は、普通に「+」で繋げていくことができます。
直感的で分かりやすいですね!

トリミング(空白除去)
1 2 3 4 5 6 |
'トリミング str1 = " abcdefg " str2 = Trim(str1) MsgBox "トリミング前 :" + str1 + vbCrLf _ + "トリミング結果:" + str2 |
文字列の前後の空白を消すトリミングを行うには「Trim」関数を使います。
処理後の文字列 = Trim(処理前の文字列)

数値→文字列変換
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'数値=>文字列 Dim i As Integer Dim d As Double i = 234 d = 3.1415 str1 = CStr(i) str2 = CStr(d) MsgBox "変換結果" + vbCrLf _ + str1 + vbCrLf _ + str2 |
数値を文字列に変換する場合は「CStr」を使います。
文字列変数 = CStr(数値)
数値がInt型でもDouble型でも同じでOK!

文字列→数値変換
1 2 3 4 5 6 7 8 9 |
'文字列=>数値 str1 = "8765" str2 = "2.71828" i = CInt(str1) d = CDbl(str2) Range("B2") = i Range("B3") = d |
文字列を数値に変換する場合は、変換したい数値の型によって変わります。
Int型に変換するなら「CInt」、
Double型に変換するなら「CDbl」を使います。
Int型変数 = CInt(文字列)
Double型文字列 = CDbl(文字列)

さいごに
私が普段よく使うVBAの文字列に関する処理をまとめました。
他にもありますが、よく使うのはこれくらいですよ。
参考になったらうれしいです。
んじゃ、また~
コメント