使う関数は、以下の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関数を使う方がよい気もしますが・・・