引数Startで指定した位置から、引数Lengthで指定した長さの分だけ、引数String
で指定した文字列から文字列を取り出します。開始位置以降の全ての文字列を取得
したい場合には、引数Lengthの指定を省略してください。
構文 Mid(String, Start, Length)
MidB(String, Start, Length)
設定項目 内容
String 取り出し元となる文字列式を指定 [省略不可]
Start どの位置から文字列を取り出すかを指定 [省略不可]
Length 取り出す文字列の長さを指定 [省略可能]
次のサンプルは、セル範囲A1〜A6に入力された文字列を、Mid関数を用いて
1文字ずつに分解して右横のセルに記入しています。
●サンプル●
Sub MidSamp1()
Dim c As Range
Dim i As Integer
For Each c In Range("A1:A6")
'---文字数分だけ繰り返し
For i = 1 To Len(c.Value)
Cells(c.Row, i + 1).Value = Mid(c.Value, i, 1) '---(1)
Next i
Next c
End Sub
●解説●
(1)のステートメントで、文字列を分解しています。1回目のループ処理では、
カウンタ変数iの値には1が代入されます。つまり、次の式は、最初の1文字を
取り出す処理になります。
Mid(c.Value, 1, 1)
もちろん、これはLeft関数で引数Lengthに1を指定した場合と同じ結果になり
ます。以降、iの値が1ずつ増加していくことで、文字列の取り出し位置が1文
字ずつ右にずれていきます。なお、対象文字列の文字数だけループ処理が必要
なため、文字数を返すLen関数で文字数を取得しています。
●ポイント●
Left関数、Right関数、Mid関数などは、Variant型(内部処理形式String)の
値で処理結果を返します。これを、String型で値を返す関数にしたい場合には、
関数名の末尾にドル記号($)をつけて、「Leht$」といった形で使用するよう
にしてください。String型で結果を返すようにすると、
・若干パフォーマンスが向上する
・異なるデータ型での比較を行なう可能性が低くなる
といったメリットがあります。しかし、ドル記号つけないからといってエラーが
発生することはありません。
●補足●
Midステートメントと混同しないように気をつけてください。Midステートメ
ントは、指定された位置の文字列を、別の文字列に置き換える処理を行ないま
す。
|