VBAでよく使う文字列操作をまとめました。
直感的に分かりやすい関数名なので、何度か使えば関数を覚えられちゃいますよ。
検索
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が返ってくる、と覚えてくださいね。
置換
'置換
str1 = "あいうえおかきくけこ"
str2 = Replace(str1, "おか", "岡")
MsgBox "置換結果:" + str2
文字列の一部を置換する場合は「Replace」関数を使います。
変換後の文字列 = Replace( 基の文字列 , 変換される文字列 , 変換する文字列 )
分割
'分割
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)から順に格納されています。
結合
'結合
str1 = "abc"
str2 = "123"
str3 = str1 + str2
MsgBox "結合結果:" + str3
文字列の結合は、普通に「+」で繋げていくことができます。
直感的で分かりやすいですね!
トリミング(空白除去)
'トリミング
str1 = " abcdefg "
str2 = Trim(str1)
MsgBox "トリミング前 :" + str1 + vbCrLf _
+ "トリミング結果:" + str2
文字列の前後の空白を消すトリミングを行うには「Trim」関数を使います。
処理後の文字列 = Trim(処理前の文字列)
数値→文字列変換
'数値=>文字列
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!
文字列→数値変換
'文字列=>数値
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の文字列に関する処理をまとめました。
他にもありますが、よく使うのはこれくらいですよ。
参考になったらうれしいです。
んじゃ、また~
コメント