「vbaでかっこの中の文字を取り出す」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
VBA(Visual Basic for Applications)を使って、括弧で括られた文字列を取得するには、どのようなコードを書けばいいのか探している方による検索です。
括弧内の文字列を取得するユーザー定義関数
「vbaでかっこの中の文字を取り出す」
という検索キーワードだけでは詳細がわかりませんが、とりあえず、括弧などで括られた文字列を取得するユーザー定義関数を作ってみました。
元の文字列 As String, _
Optional 開くカッコ As String = "(", _
Optional 閉じカッコ As String = ")") _
As String
Dim pos_a As Long ' 開くカッコの位置
Dim pos_z As Long ' 閉じカッコの位置
pos_a = InStr(1, 元の文字列, 開くカッコ)
pos_z = InStr(pos_a + 1, 元の文字列, 閉じカッコ)
カッコ内の文字列を取得する = _
Mid(元の文字列, pos_a + 1, pos_z - pos_a - 1)
引数を3つ指定する関数にしました。
第1引数は元の括弧で括られた文字列を含む文字列
第2引数は開く括弧
第3引数は閉じる括弧
を指定します。
例えばA1セルに、
新妻「何もしてあげられません。実力の世界ですから。」
と入力されているときに、B1セルに、
=カッコ内の文字列を取得する(A1, "「", "」")
という、上記のユーザー定義関数を使った数式を入力するとB1セルに、
何もしてあげられません。実力の世界ですから。
という、カギ括弧内の文字列が表示されます。
ユーザー定義関数の解説
第2引数に指定された開くカッコが、元の文字列の何文字目にあるかをInStr関数を使って取得して、変数・pos_aに代入し、
pos_a = InStr(1, 元の文字列, 開くカッコ)
第3引数に指定された閉じカッコが何文字目にあるかを、同じくInStra関数を使って取得して変数・pos_zに格納しておいてから、
pos_z = InStr(pos_a + 1, 元の文字列, 閉じカッコ)
VBAのMid関数を使って、括弧の中の文字列を取得しています。
カッコ内の文字列を取得する = _
Mid(元の文字列, pos_a + 1, pos_z - pos_a - 1)
このユーザー定義関数を利用するシーンを想像すると、頻繁に使う括弧記号が存在するときに、3つとも引数を指定するのは面倒なので、
Function カッコ内の文字列を取得する( _
元の文字列 As String, _
Optional 開くカッコ As String = "(", _
Optional 閉じカッコ As String = ")") _
と、Optionalキーワードを使って、第2引数と第3引数を省略可能にして、省略されたときに、開く括弧記号は「(」、閉じる括弧記号は「)」が指定されたとみなされるようにしています。
- Newer:ヘッダー内のテキストボックスをWord VBAで処理する
- Older:カーソルが表内にあるかWord VBAで判定する
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » VBAで括弧内の文字列を取得する