このトピックに書きこむ |
---|
Re[7]: select caseを使いたい | |
---|---|
[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」というワードが目についてしまうからでしょうか。 どちらにしても、直前に返事したように、 感覚的でしかありません。 (実際はあなたの言うとおりですが) 何回もありがとうございました。 |
[194755] Re[6]: select caseを使いたい- ■記事引用/メール受信=OFF■ □投稿者/ hatena -(2022/02/15(16:09)) □U R L/ Select は本来は、 Select Case 式 Case 値1 Case 値2 End Select 式の結果と値が一致したら処理が実行される。 Select Case 値(True) Case 式1 Case 式2 End Select これが成り立つのは、Selectは上から順に比較していって一致したら実行するという仕様だからです。つまり、式がTrueになったら実行される。 やっていることは、If文とまったく同じことです。 > if then else はそれでないならと、上からレベルを下げてくる、 「上からレベルを下げてくる」というイメージがそもそも違うと思います。 上から順に式を評価してTrueになった時点で実行するという点では、 If Then ElseIf と Select 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 を使いたく質問した、 ということです。 |
[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 の書き方には違和感があります。 |
[194752] Re[3]: select caseを使いたい- ■ / 記事引用/メール受信=OFF■ □投稿者/ 吉田 -(2022/02/14(14:01)) □U R L/ 半平太様、早速ありがとうございました。 帰るまで待ちきれず、 昼休みに出てきました。 教えてもらえばなるほどだったのですが、 考え付きませんでした。 trueは知りませんでしたが、 A-Bは考えればたどり着けたかもしれませんね。 兎に角問題なくできました。 折角検証迄していただきましたが、 ABどちらも整数だけなので問題ないのですが、 trueの方が当初の方向に近いので、 「true」バージョンを使わせて頂きます。 if then elseしかないかと思っていたので、 喜んでおります。 お世話になりました。 |
[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が大きいと判定されました。 |
[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との比較になっているので)、未検証です。 |
[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 宜しくお願いします。 ++++++++++++++++++++ OS ⇒OTHER Version⇒Excel 2003 ++++++++++++++++++++ |