
textに自分で入力した値を変数文字列として扱う場合に、括弧を使いたいのですが、
例
Dim A as string
Dim B as string
A = Text1.text
B = "abc"
としてコマンドボタンを押したときにAとBの値が同じ場合(Aがabc)は1をAとBの値が違うときは0を出力するプログラムを作ったのですが、これに追加で括弧()や[]をつけても1を出力するプログラムが作りたいのですが、よくわかりません。
Text1.textの値が(abc)か[abc]でも1を出力、 [ab]cやa(b)cでも1を出力、(abcやa)bc(やa(b(cのときは0を出力するプログラムが作りたいのです。
どうか教えてください。
おねがいします。
No.2ベストアンサー
- 回答日時:
'()または、[]がペアになっているか調べてなっていれば取り除いて=かどうか調べる
Dim bucketL, bucketR,a,b
a=Text1.text
b="abc"
bucketL = InStr(a, "[")
bucketR = InStr(a, "]")
If bucketL < bucketR And bucketL * bucketR <> 0 Then
a = Replace(a, "[", "", , 1)
a = Replace(a, "]", "", , 1)
End If
bucketL = InStr(a, "(")
bucketR = InStr(a, ")")
If bucketL < bucketR And bucketL * bucketR <> 0 Then
a = Replace(a, "(", "", , 1)
a = Replace(a, ")", "", , 1)
End If
if a = b then
'同じ
MsgBox 1
else
'違う
MsgBox 0
end if
回答ありがとうございます。
またお世話になります。
プログラムに対する説明が1部わからないのでどうか教えてください。
>bucketL = InStr(a, "[")
'文字列aの中に[が何文字目にきているか調べて、その値をbuketLにいれる'
>bucketR = InStr(a, "]") ''
'文字列aの中に]が何文字目にきているか調べて、その値をbucketRにいれる'
>If bucketL < bucketR And bucketL * bucketR <> 0
>Then
'bucketLがbucketRより小さい値で、bucketLとbucketRをかけた値が0以外のとき'
>a = Replace(a, "[", "", , 1)
'指定された文字列の1部を、別の文字列で指定された回数分で置換してaにいれる。
Replaceは関数
aは置換する文字列を含む文字列
"["は検索する文字列
""は置換する文字列(?)
はスペース(?)
1は検索開始位置(1文字目から)'
No.3
- 回答日時:
#2>
>""は置換する文字列(?)
>はスペース(?)
>1は検索開始位置(1文字目から)'
""は、長さのない文字列
つまり、長さのない文字列で置き換える
つまり、取り除くってことですね。
a = Replace(a, ")", "",ココ , 1)
"ココ"は、置換を開始する位置を数値で書きます
省略すると1が想定されます。
その後の1は、置き換える回数で、省略すると全部置き換えされます。ここでは、1を指定しているので、1回置き換えます。
結果が1になる場合、カッコのペアたかだか1回であるということを想定しているからです。(実際は違うのかもしれませんが、質問文からはそう思えました。)もし、1回以上であったり、順序が逆の場合は、除去されないカッコが残るので、当然カッコを含まない文字列とは一致しないということですね。
回答ありがとうございます。
わかりやすい説明ありがとうございます。
括弧の数は決まってないですが、たぶん1個ずつのセットしかでてこないので大丈夫だと思います(説明不足でした、すいません)
スペースは開始する位置を示していたんですね。
そして最後の1は回数だったのですね。
If bucketL < bucketR And bucketL * bucketR <> 0 Thenの*や<>も使い方をよく知らなかったので勉強になりました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Excel(エクセル) エクセルの数式で添付写真のものを入力していてわからないのですが、こちらの通り[]括弧も入れて入力しま 4 2023/02/05 18:33
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- 数学 スカラー三重積 [ABC]の括弧[ ]をグラスマン記号と言うと思います。 そこで、一般に[ABC]を 1 2023/07/20 10:24
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルコーテーション(
-
VBAのコマンドボタンの文字列の...
-
メッセージボックスで1025文字...
-
改行について
-
PHPで変数から1行目だけを取得...
-
文字の入力で横バー上段、中断...
-
プログラムコードを入力する場...
-
htmlソースの中を検索して、
-
PHPの正規表現について
-
バーコード入力と手入力の判断...
-
エクセルでまた困っています。
-
i-mode、ez-web、ボーダフォン...
-
文字化け変換方法
-
全角ダッシュの出力
-
vb.netでのリッチテキストボッ...
-
改行を読み飛ばす
-
VBAでCSVをExcelに取り込む時に...
-
メタ文字の$
-
C言語の標準入力で改行しない方法
-
ExcelVBAでメールを作成してメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
文字列の括弧について(初心者)
-
c# string型の変数に、ダブルク...
-
VBSで"をエスケープする文字は?
-
○分から○時間○分に変換
-
入力文字に\\マークが入ってい...
-
mcryptで英数字(12未満)のみに...
-
マクロ関数 #define の効果は何...
-
正規表現
-
VB.NET 文字コード
-
PHPでCSVを出力する際のセルに...
-
PHPでjavascriptを書き出すとき...
-
ヒットする初回のみ置換する方法
-
文字列のアスタリスク置換
-
php 正規表現で、\\マークを取...
-
正規表現について
-
PHP VS Java (パフォーマン...
-
sedでの最短一致の書き方
-
正規表現での記述方法
おすすめ情報