Page 856 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼条件分岐 conan 03/3/8(土) 14:28 ┗Re:条件分岐 りん 03/3/8(土) 14:51 ┗Re:条件分岐 conan 03/3/8(土) 23:05 ┗Re:条件分岐 Hirofumi 03/3/9(日) 5:26 ┗Re:条件分岐 ねこ@休日出勤 03/3/9(日) 17:21 ┗Re:条件分岐 ねこ@休日出勤 03/3/9(日) 17:25 ┗Re:条件分岐 conan 03/3/10(月) 15:01 ─────────────────────────────────────── ■題名 : 条件分岐 ■名前 : conan ■日付 : 03/3/8(土) 14:28 -------------------------------------------------------------------------
毎度お世話になっています。 早速質問なんですが、 select caseを使って条件分岐をしたいんですが 分岐の項目を()内の文字で分岐する方法を ご教授してほしいのですが。 例: TextBox1には、”東京(A)”と代入。 select case TextBox1 case is = "(A)" msgbox("ランク1です。") case is = "(B)" msgbox("ランク2です。") case is = "(C)" msgbox("ランク3です。") end select この場合だと、カッコ内の文字は(A)なので msgbox("ランク1です。")、と出る。 このようにしたいんですが、よろしくお願いします。 |
conan さん、こんにちわ。 >select caseを使って条件分岐をしたいんですが >分岐の項目を()内の文字で分岐する方法を >ご教授してほしいのですが。 右から2文字目を取得して、A,B,Cの時(全角・半角・大文字・小文字の区別なし)はランクを表示します。 'TextBox1.Text = "東京(A)" 'カッコ内の文字 AA$ = StrConv(Left(Right(Trim(TextBox1.Text), 2), 1), _ vbNarrow + vbUpperCase) 'カッコ内の文字で分岐 Select Case AA$ Case "A" To "C" 'Asc("A") = 65 Msg$ = "ランク" + Format(Asc(AA$) - 64, "0") + "です。" Case Else Msg$ = "右から2番目はA,B,Cではありません" End Select MsgBox Msg$, vbInformation こんな感じです。他にも方法はいろいろあると思います。 ()の位置が最後とは限らない場合は、Instr関数で『(』の位置を取得してMid関数で判定文字を取得すればいいです。 |
りんさん、こんばんわ。 お返事ありがとうございます。 前回質問したことを少し変えたいんですが、 条件分岐する内容が前回は右から2番目の文字と 言ったんですが、()内の文字を分岐する内容にする場合は どうしたらいいんでしょうか。 (abcdefj) ------- ↑この内容を取得する方法を教えていただければ幸いです。 |
横から失礼します りんさんでは有りませんが >(abcdefj) >------- > ↑この内容を取得する方法を教えていただければ幸いです。 InStr関数を使用して、行うならこんなかな? 以下の部分を > 'カッコ内の文字 > AA$ = StrConv(Left(Right(Trim(TextBox1.Text), 2), 1), _ > vbNarrow + vbUpperCase) 以下の様にすれば善いと思います Dim lngFPos As Long Dim lngRPos As Long Dim AA$ lngFPos = InStr(1, AA$, "(", vbTextCompare) lngRPos = InStr(1, AA$, ")", vbTextCompare) AA$ = Mid$(AA$, lngFPos + 1, lngRPos - lngFPos - 1) ' AA$ = StrConv(AA$, vbNarrow + vbUpperCase) 当然ですが、Select Caseの判定は替えなければ逝けません また、コメントアウト部分は、内容を全て半角大文字にしています 尚、別のサイトですが、同様の事を正規表現を使用して取得していました その様なやり方も有るようです |
▼Hirofumi さん: >横から失礼します >りんさんでは有りませんが > >>(abcdefj) >>------- >> ↑この内容を取得する方法を教えていただければ幸いです。 > >InStr関数を使用して、行うならこんなかな? >以下の部分を > >> 'カッコ内の文字 >> AA$ = StrConv(Left(Right(Trim(TextBox1.Text), 2), 1), _ >> vbNarrow + vbUpperCase) > >以下の様にすれば善いと思います > > Dim lngFPos As Long > Dim lngRPos As Long > Dim AA$ > > lngFPos = InStr(1, AA$, "(", vbTextCompare) > lngRPos = InStr(1, AA$, ")", vbTextCompare) > AA$ = Mid$(AA$, lngFPos + 1, lngRPos - lngFPos - 1) >' AA$ = StrConv(AA$, vbNarrow + vbUpperCase) > >当然ですが、Select Caseの判定は替えなければ逝けません >また、コメントアウト部分は、内容を全て半角大文字にしています > >尚、別のサイトですが、同様の事を正規表現を使用して取得していました >その様なやり方も有るようです Like演算子を使うやつ? Print "(a)" like "([abcde])" をイミディエイトウィンドで 試してみてね。 []内に無い文字の場合Falseが返ります。 じゃねじゃね |
あ〜 あまりに久しぶりすぎて挨拶忘れてた(w どもども ねこ@ほげほげ です。 ^^; てことで〜〜(w |
Hirofumiさん、ねこ@休日出勤さん、こんにちは。 いろいろとレスを書いていただきありがとうございました。 試してみます。 |