No.5ベストアンサー
- 回答日時:
#1、2、cjです。
パターンマッチングのお話だと思い、お応えしているのですが、、、。
ちょっと片手落ちだった気もするので、一応補足を加えます。
If mystr Like "*[[]*]*" Then
のように書けば、[と]の組み合わせを同時にマッチングできます。
各種の正規表現やExcel一般機能(関数等)には
メタ文字(Like演算子の角括弧のように意味を持つ特殊文字)を
文字列比較する為にエスケープ文字(^や\や~を特殊文字の前に付加)が用意されていますが、
Like演算子の場合はエスケープ文字がありません。
(これ↑、はっきり書いた方が良かったですね)
#2で引用したVBAヘルプのメモのように、
エスケープする為に角括弧[]で括る必要があります。
正規表現などに比べればマッチングが制限されているのも確かです。
特長を示す例としては
If mystr Like "*[[]t*]*" Then
のように判別することで、
mystr = "[test]" なら マッチするのでTrue
mystr = "[rest]" や
mystr = "[test" や
mystr = "test]" 等なら マッチしないのでFalse
というような使い方をします。
ただLike演算子のパターンマッチングは万能ではありませんから、
場合によっては正規表現(VBAの場合はVBScriptのRegExp)を用いて
より精度の高いパターンマッチングが求められるケースもあることでしょう。
"角カッコが含まれてるかどうか"
だけ、を限定的な意味で捉えれば、それは検索ですから、
InStr関数を使って、戻り値が[0でない場合、0である場合]
といった具合に判別するのは、非常に優れた検索方法です。
目的に適うツールを選べるように、
基本的なことは色々知っておいた方がいい、ということになるのでしょうか。
No.3
- 回答日時:
こんにちは、likeでは回答が出ておりますので
>こういうように各カッコが含まれてるかどうかを取得するにはどうすればいいですか?
InStr 関数を使った方法です。参考に
mystr = "[test]"
If InStr(mystr, "[") Then
MsgBox "[が含まれます"
End If
No.2
- 回答日時:
#1、cjです。
追加レスです。VBAヘルプの Like演算子を引くと、正にご質問への答えが説明されていました。
以下VBAヘルプより引用(改行は筆者)
|メモ 特殊文字の左角かっこ ([)、疑問符 (?)、数値記号 (#)、およびアスタリスク (*) を
|文字列比較するには、これらの文字を角かっこで囲みます。
|右角かっこ (]) をワイルドカードとしてではなくその文字自体として文字列比較を行うときには、
|右角かっこを他の文字と共に角かっこで囲んでリストの中に指定することはできません。
|右角かっこは、文字のリストに入れずに単独で指定すると、
|独立した文字として、文字列の中の文字と比較できます。
以上引用
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA 1 2023/04/27 13:37
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
文字列内で括弧を使うには
Visual Basic(VBA)
-
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
-
4
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
5
Excel-vba 文字列と変数を連結して更に変数として扱いたい
その他(プログラミング・Web制作)
-
6
VBA2005 16進を2桁で表示したい。
Visual Basic(VBA)
-
7
ascW関数の結果がおかしい
Visual Basic(VBA)
-
8
ExcelVba 有効なセルかどうかを判定するには
Visual Basic(VBA)
-
9
配列で格納したものをmsgboxで表示する方法について
Access(アクセス)
-
10
括弧があるとHYPERLINKで飛べない?
Excel(エクセル)
-
11
Excel: ファイル名になぜ、[ ]が使えないのでしょうか
Windows Me・NT・2000
-
12
VBAでの[]
Visual Basic(VBA)
-
13
配列の値を置換するにはどうすればいいでしょう?
Excel(エクセル)
-
14
値の貼り付けをするVBA
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現 英数字を1つ以上含む...
-
指定した文字列を複数含むとい...
-
「何とかで始まり、何とかで終...
-
何故、日本は未だに数字を3桁...
-
Malformed UTF-8 character
-
プログラミングでは、半角括弧...
-
ACCESSの表で罫線を使うと縦方...
-
正規表現について教えてください
-
CSVファイルの中で、「 , 」カ...
-
住宅にカナを入力する際に丁目...
-
PHPの文字化けについて
-
メールのURLがつながってしまう
-
いまスマホからカードの申込み...
-
unicodeの表示
-
スペースで区切られた氏名から...
-
dat形式ををcsv形式に変更したい。
-
python 大文字小文字を区別しな...
-
jcode.plのかわり
-
対称群はなぜそう呼ばれるので...
-
vba アクティブシートの名前変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【abc】に【完全一致】する正規...
-
入力された文字列が、LD22000を...
-
「何とかで始まり、何とかで終...
-
VBA EXCEL あるセルの中の一...
-
正規表現の否定先読みで、複数...
-
バッチファイルの正規表現を利...
-
「abcで始まらない」を正規表現...
-
角カッコが含まれてるかどうか...
-
正規表現
-
正規表現 英数字を1つ以上含む...
-
VBAのInstrについて
-
文字連続の検出手段
-
文頭・文末の記号をチェック
-
空白の制御
-
intの挙動?
-
VBにおける文字列の部分一致検索
-
マクロ・VB得意な人へ。指定し...
-
文字と数字の判定
-
CGI.pmで'&'が'&'に置き換...
-
XML::Xpathで部分一致検索をす...
おすすめ情報