過去ログ

                                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です。")、と出る。
このようにしたいんですが、よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:条件分岐  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 03/3/8(土) 14:51  -------------------------------------------------------------------------
   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関数で判定文字を取得すればいいです。
 ───────────────────────────────────────  ■題名 : Re:条件分岐  ■名前 : conan  ■日付 : 03/3/8(土) 23:05  -------------------------------------------------------------------------
   りんさん、こんばんわ。
お返事ありがとうございます。

前回質問したことを少し変えたいんですが、
条件分岐する内容が前回は右から2番目の文字と
言ったんですが、()内の文字を分岐する内容にする場合は
どうしたらいいんでしょうか。

(abcdefj)
-------
  ↑この内容を取得する方法を教えていただければ幸いです。 
 ───────────────────────────────────────  ■題名 : Re:条件分岐  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 03/3/9(日) 5:26  -------------------------------------------------------------------------
   横から失礼します
りんさんでは有りませんが

>(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の判定は替えなければ逝けません
また、コメントアウト部分は、内容を全て半角大文字にしています

尚、別のサイトですが、同様の事を正規表現を使用して取得していました
その様なやり方も有るようです
 ───────────────────────────────────────  ■題名 : Re:条件分岐  ■名前 : ねこ@休日出勤  ■日付 : 03/3/9(日) 17:21  -------------------------------------------------------------------------
   ▼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が返ります。

じゃねじゃね
 ───────────────────────────────────────  ■題名 : Re:条件分岐  ■名前 : ねこ@休日出勤  ■日付 : 03/3/9(日) 17:25  -------------------------------------------------------------------------
   あ〜 あまりに久しぶりすぎて挨拶忘れてた(w

どもども ねこ@ほげほげ です。 ^^;
てことで〜〜(w
 ───────────────────────────────────────  ■題名 : Re:条件分岐  ■名前 : conan  ■日付 : 03/3/10(月) 15:01  -------------------------------------------------------------------------
   Hirofumiさん、ねこ@休日出勤さん、こんにちは。
いろいろとレスを書いていただきありがとうございました。

試してみます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 856