文字列の指定位置から、指定数分の文字列を取得する関数です。
関数仕様
構文 |
Mid(string, start[, length]) |
引数 |
引数 |
省略 |
説明 |
string |
不可 |
任意の文字列式を指定します。 |
start |
不可 |
切り出す文字列の開始位置を指定します。 |
length |
可 |
切り出す文字列の文字数を指定します。
省略した場合は、文字列の最後までが対象となります。
|
|
戻り値 |
バリアント型(内部処理形式 String の Variant) |
この関数は、指定文字列内の指定位置から指定数分の文字列を取得し、その値をバリアント型(内部処理形式 String の Variant)で返します。 切り出す文字列の開始位置と文字数を指定することで、文字列内の任意の文字列を取得できます。 切り出す文字数を省略した場合は開始位置から文字列の最後までを取得します。 開始位置は 1 からとなり、0 以下(0 または負数)を指定した場合は実行時エラーが発生します。 また、切り出す文字数に負数を指定した場合もエラーとなります。(切り出す文字数に 0 を指定した場合は長さ 0 の文字列("")が返ります) なお、指定文字列内に Null 値が含まれていた場合、この関数はエラーとはなりません。 Null 値をそのまま返します。
この関数は関数名に型宣言文字「$」を付けることで、戻り値を明示的に文字列型(String)にすることもできます。
strData = Mid$("abcde", 3, 2)
※ 型宣言文字「$」は関数名の最後に付けます。
文字列内の文字列を切り出す関数として似たような機能を持つ Left()関数 や Right()関数 などがありますが、この関数を使用して、それらの関数の代用をすることもできます。
Left()関数と似たような結果をえる場合
Left()関数と同様に左端から指定数分の文字列を取得する場合は、以下の指定をします。
var = Mid(文字列, 1, 切り出す文字数)
※ 開始位置に 1 番(最初の文字)を指定することで、左端からの切り出しになります。
Right()関数と似たような結果をえる場合
Right()関数と同様に右端から指定数分の文字列を取得する場合は、以下の指定をします。
var = Mid(文字列, (文字列の文字数 - 切り出す文字数) + 1)
※ Mid() 関数は Right() 関数とは違い、右端からの文字数を指定するのではない為、文字列の全文字数から取得したい文字数を引いた数 + 1 を開始位置とすることで、擬似的に右端から指定数分の文字列を取得します。(文字列の最後までを取得するので、取得文字数は省略します)
動作検証
条件 |
例 |
動作結果 |
半角文字列の切り出しを指定した場合
(2文字目から3文字)
|
Mid("abcde", 2, 3)
|
bcd |
全角文字列を切り出しを指定した場合
(3文字目から3文字)
|
Mid("あいうえお", 3, 3)
|
うえお |
全角と半角が混じる文字列の切り出しを指定した場合
(4文字目から5文字)
|
Mid("abあいcdeうえお", 4, 5)
|
いcdeう |
切り出す文字数を省略した場合
|
Mid("あいうえお", 2)
|
いうえお(※1) |
MidB()関数でバイト数を指定した場合
|
MidB("あいうえお", 2, 4)
|
いう(※2) |
切り出す文字列の開始位置に 0 を指定した場合
|
Mid("あいうえお", 0, 3)
|
実行時エラー |
切り出し文字数に負数を指定した場合
|
Mid("abcde", 1, -1)
|
実行時エラー |
文字列にNull値を指定した場合
|
Mid(Null, 1, 1)
|
Null(※3) |
※1 切り出す文字数を省略した場合、開始位置から文字列の終端までを取得します。
※2 MidB()関数はバイト数を指定する為、2 バイト文字列に取得数 4 を指定した場合、開始位置から 2 文字(4 バイト)が返ります。
※3 この関数はNull値を指定してもエラーとはなりません。
派生関数
この関数には以下の派生関数があります。
関数 |
説明 |
MidB
|
文字列をバイトデータとして扱い、文字列の指定位置から指定数分のバイトデータを取得します。
|
類似関数
この関数に類似する機能をもつ関数は、以下のものがあります。
関数 |
説明 |
Left
|
文字列の左端から、指定数分の文字列を取得する。
|
Right
|
文字列の右端から、指定数分の文字列を取得する。
|
注意事項
- VB.NET 以降では MidB 関数はサポートされていません。(廃止されました)
サンプルコード
Sub Sample()
Dim filename As String
filename = "testfile.xxx"
Debug.Print Mid(filename, InStr(filename, ".") + 1) '拡張子を返します
End Sub
※ 上記サンプルは InStr() 関数で「.(ピリオド)」の位置を特定し、その後から最後までの文字列を取得しています。