使う関数は、以下の4つです(Lenは使っていませんでした・・・)
- Len(s) = 文字列sの文字数を返す
- Left(s, n) = 文字列sの左からn文字目までの部分文字列を返す
- Mid(s, n, m) = 文字列sの左からn文字目からm文字分の部分文字列を返す
※mが省略された場合は、n文字目から最後までの部分文字列を返す - InStr(s, t) = 文字列sの中に文字tが何番目にあるか返す
使い方
まずは、簡単な使い方を見て見ましょうSub haiku_asobi() Dim haiku As String haiku = "冬籠り また寄りそはん この柱" Dim s As String s = haiku range("a1").Activate ActiveCell.value = "元の文字列" ActiveCell.offset(0,1).value = s ActiveCell.offset(1).Activate ActiveCell.value = "文字数の長さ(Length)" ActiveCell.offset(0,1).value = Len(s) ActiveCell.offset(1).Activate ActiveCell.value = "左から1文字" ActiveCell.offset(0,1).value = Left(s, 1) ActiveCell.offset(1).Activate ActiveCell.value = "2文字目から後ろの部分" ActiveCell.offset(0,1).value = Mid(s, 2) ActiveCell.offset(1).Activate ActiveCell.value = """ ""の位置は何番目か?" ActiveCell.offset(0,1).value = InStr(s, " ") ActiveCell.offset(1).Activate ActiveCell.value = "空白文字より左部分" ActiveCell.offset(0,1).value = Left(s, InStr(s, " ")) ActiveCell.offset(1).Activate End Sub
空白文字で区切る
次に、空白文字で区切られた俳句を3つに切り分けて見ましょうSub haiku_asobi2() Dim haiku As String haiku = "冬籠り また寄りそはん この柱" Dim s As String s = haiku range("a1").Activate Dim n As Integer, m As Integer Dim t As String n = InStr(haiku, " ") s = Left(haiku, n - 1) ActiveCell.value = "初句" ActiveCell.offset(0,1).value = s ActiveCell.offset(1).Activate n = InStr(haiku, " ") t = Mid(haiku, n + 1) ActiveCell.value = "残り" ActiveCell.offset(0,1).value = t ActiveCell.offset(1).Activate n = InStr(t, " ") s = Left(t, n - 1) ActiveCell.value = "二句" ActiveCell.offset(0,1).value = s ActiveCell.offset(1).Activate s = Mid(t, n+1) ActiveCell.value = "三句" ActiveCell.offset(0,1).value = s ActiveCell.offset(1).Activate End Subちなみに、結果をアクティブセルを動かしながら表示しています。
この例では、Split関数を使う方がよい気もしますが・・・