VBA 文字列の一部分を取得する関数を作る
きっかけ
いつも勉強させてもらっている伊藤先生のサイトで、面白い記事があった。
ByRef・参照渡しとはどう使うのか:エクセルマクロ・Excel VBAの使い方
サンプルコード
戻り値が配列の場合
Function 文字列から要素数2の配列を取得(ByVal code As String) As String() Dim ret(1) As String ret(0) = Mid(code, 1, 4) ret(1) = Mid(code, 5, 6) 文字列から要素数2の配列を取得 = ret End Function
イミディエイトウインドウでテストすると下記のようになる
? 文字列から要素数2の配列を取得("abcd012345")(0) abcd ? 文字列から要素数2の配列を取得("abcd012345")(1) 012345
戻り値が文字列の場合
Function 2つに分割した文字列を取得(ByVal code As String, num As Long) As String Dim ret As String Select Case num Case 0: ret = Mid(code, 1, 4) Case 1: ret = Mid(code, 5, 6) Case Else: ret = "ERROR" End Select 2つに分割した文字列を取得 = ret End Function
なお、0,1以外が入力された場合は"ERROR"を返すようにした。
前半を0、後半を1、というのは分かりにくいな。。
仮引数名が「num」というのもいまいちだが、、
イミディエイトウインドウでテストすると下記のようになる
? 2つに分割した文字列を取得("abcd012345",0) abcd ? 2つに分割した文字列を取得("abcd012345",1) 012345 ? 2つに分割した文字列を取得("abcd012345",-10) ERROR