戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
select caseを使いたい

    [194749] select caseを使いたい-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ 吉田 -(2022/02/14(07:30))
    □U R L/
      標題の通りAselect case を使いたいのですが、
      書き方が分かりません。
      そもそも以下の条件では使えないのでしょうか。
      やはり if then else になるしかないのでしょうか。
      
      やりたいことです。
      数値変数「A」、数値変数「B」が在り、
      この大小関係によって処理を分けたいのです。
      
      条件は
      A>B A<B A=Bの3通りです。
      
      ダメだったのですが、
      イメージは以下の通りです。
      
       select case A,B
          case is A>B
            xxxxxxxxxxxxxxx
          case is A<B
            yyyyyyyyyyyyyyy
          case is A=B
            zzzzzzzzzzzzzzz
       end select
      
      宜しくお願いします。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒Excel 2003
      ++++++++++++++++++++




    [194750] Re[1]: select caseを使いたい-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2022/02/14(09:10))
    □U R L/
       Select Case True
          Case (A > B)
            Debug.Print "xxxxxxxxxxxxxxx"
          Case (A < B)
            Debug.Print "yyyyyyyyyyyyyyy"
          Case (A = B)
            Debug.Print "zzzzzzzzzzzzzzz"
       End Select
      
      とか
       Select Case A - B
          Case Is > 0
            Debug.Print "xxxxxxxxxxxxxxx"
          Case Is < 0
            Debug.Print "yyyyyyyyyyyyyyy"
          Case Is = 0
            Debug.Print "zzzzzzzzzzzzzzz"
       End Select
      
      ですかね。
      
      後者の方が厳密に判定される気がしますが(0との比較になっているので)、未検証です。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [194751] Re[2]: select caseを使いたい-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2022/02/14(09:31))
    □U R L/
      >後者の方が厳密に判定される気がしますが、未検証です。
      
      A = 3 * 0.3
      B = 0.9   (こっちが 0.5の53乗だけ大きい)
      
      で検証してみましたところ、
      ワークシート上ではA=B はTRUEになるのですが、VBAでは厳密に判定してくれて、
      前者でも問題なくBが大きいと判定されました。
      




    [194752] Re[3]: select caseを使いたい-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ 吉田 -(2022/02/14(14:01))
    □U R L/

      半平太様、早速ありがとうございました。
      帰るまで待ちきれず、
      昼休みに出てきました。

      教えてもらえばなるほどだったのですが、
      考え付きませんでした。

      trueは知りませんでしたが、
      A-Bは考えればたどり着けたかもしれませんね。
      兎に角問題なくできました。

      折角検証迄していただきましたが、
      ABどちらも整数だけなので問題ないのですが、
      trueの方が当初の方向に近いので、
      「true」バージョンを使わせて頂きます。

      if then elseしかないかと思っていたので、
      喜んでおります。
      お世話になりました。




    [194753] Re[4]: select caseを使いたい-

    記事引用/メール受信=OFF■

    □投稿者/ hatena -(2022/02/15(12:42))
    □U R L/
      Select Case True
      という書き方をVBA界隈ではよく見かけるのですが、
      
      今回の場合なら、素直に書けば、
      
       If A > B Then
           Debug.Print "xxxxxxxxxxxxxxx"
       ElseIf A < B Then
           Debug.Print "yyyyyyyyyyyyyyy"
       Else
           Debug.Print "zzzzzzzzzzzzzzz"
       End If
      
      となると思うのですが、
      
       Select Case True
          Case (A > B)
            Debug.Print "xxxxxxxxxxxxxxx"
          Case (A < B)
            Debug.Print "yyyyyyyyyyyyyyy"
          Case (A = B)
            Debug.Print "zzzzzzzzzzzzzzz"
       End Select
      
      と書くメリットてなんなのでしょう。
      
      
      好みの問題かもしれませんが、
      個人的には Select Case True の書き方には違和感があります。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [194754] Re[5]: select caseを使いたい-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ 吉田 -(2022/02/15(13:56))
    □U R L/

      hatena様

      >と書くメリットてなんなのでしょう。
      半平太さんのお礼に書きましたように、
      感覚的なものです。

      私の感覚では、
      select case はすべての条件がeven,
      if then else はそれでないならと、上からレベルを下げてくる、
      というイメージが在ります。
      まさに感覚だけです。

      なので、今回やろうとしていたテーマに方向性が合っていた、
      というだけです。

      初めから if then else で書いていましたが、
      敢えて select case を使いたく質問した、
      ということです。






    [194755] Re[6]: select caseを使いたい-

    記事引用/メール受信=OFF■

    □投稿者/ hatena -(2022/02/15(16:09))
    □U R L/
      Select は本来は、
      
      Select CaseCase 値1
      
      Case 値2
      
      End Select
      
      式の結果と値が一致したら処理が実行される。
      
      Select Case 値(True)
      Case 式1
      
      Case 式2
      
      End Select
      
      これが成り立つのは、Selectは上から順に比較していって一致したら実行するという仕様だからです。つまり、式がTrueになったら実行される。
      
      やっていることは、If文とまったく同じことです。
      
      > if then else はそれでないならと、上からレベルを下げてくる、
      
      「上からレベルを下げてくる」というイメージがそもそも違うと思います。
      上から順に式を評価してTrueになった時点で実行するという点では、
      If Then ElseIfSelect True はまったく同じだと思います。
      
      まあ、感覚的なものと言われたら、これ以上に何も言うことはありませんが。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [194756] Re[7]: select caseを使いたい-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ 吉田 -(2022/02/15(17:50))
    □U R L/

      hatena様

      確かにそのとおりですね。
      どちらかと言えば、if then else と同じですね。

      でもなぜか、even と思ってしまうのは、
      select case は形式が横に一列に並んでいること。
      逆に、if then else は 「else」というワードが目についてしまうからでしょうか。

      どちらにしても、直前に返事したように、
      感覚的でしかありません。
      (実際はあなたの言うとおりですが)

      何回もありがとうございました。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G