Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2013)
Select Case の Isキーワードについて
投稿日時: 18/03/01 17:15:03
投稿者: オムライス

お世話になります。
(すみません。一度消して文章修正しています)
 
コードの動作が理解できずご教示いただけますと幸いです。
以下のコードを実行すると、イミディエイトウィンドウに
「2より大きい」と表示されます。
 

Sub Test()
    Dim temp As Variant
    
    temp = "#"
    
    Select Case temp
        Case Is > 2
            Debug.Print "2より大きい"
        Case Else
            Debug.Print "それ以外"
    End Select
End Sub

 
文字コードの問題かとも思ったのですが、#は「35」、2は「50」です。
そこで、#だけが文字コードに変換され、「2」のほうはそのまま比較
(つまり 35 > 2 の比較)されたのではと考え、「Case Is > 2」の部分を
「Case Is > 50」としてみたのですが、やはり「2より大きい」と表示されます。
 
どうもよくわかりません。どのような比較が行われているのでしょうか。
(文字と数値の比較はダメというのは無しでお願いします)
 
恐縮ですが、何卒宜しくお願い致します。

回答
投稿日時: 18/03/01 19:13:51
投稿者: Suzu

引用:
(文字と数値の比較はダメというのは無しでお願いします)

 
なぜ無しなのですか?
それが事実であれば、受け入れるしかないと思いますが。
 
 
内部処理がどうなっているのか、確認できませんので推測です。
 
    A
1    FLD
2    #
3    1
4    23
5    13
6    '3
 
とデータを作り、EXCELの並べ替えを行います。
文字と数値の比較ですので
次の並べ替えのキーにはテキスト形式の数値が含まれているため〜〜〜
○数値に見えるものはすべて数値として並べ替えを行う
●数値とテキスト形式の数値を分けて並べ替えを行う
 
後者にチェックを入れて実行すると
 
    A
1    FLD
2    1
3    13
4    23
5    #
6    '3
 
数値が先、文字が後で並びます。
この順番に従っているのでは?
 
推測の域を出ませんから何とも。
プログラムをする上で、そんな不確定な事を悩んでもしょうがないと言うのが感想です。
ロジスティックに確定できる様に組むことの方が大事だと考えます。

回答
投稿日時: 18/03/01 19:22:39
投稿者: eden

[XL2000]比較演算子による比較結果について
https://support.microsoft.com/ja-jp/help/416983
 
>記号や空白を含む全ての文字は数値よりも大きいと判断されます。

投稿日時: 18/03/01 19:27:19
投稿者: オムライス

Suzu様
 
ありがとうございます。
確かに、その順序に従っているようですね。
そこは気づきませんでした。
もっとも、おっしゃる通り推測の域を出るものではありませんが、私にとっては十分です。
 

引用:
プログラムをする上で、そんな不確定な事を悩んでもしょうがないと言うのが感想です。
ロジスティックに確定できる様に組むことの方が大事だと考えます。

おっしゃる通りです。
ただ、単純に気になっただけでした。
 
ありがとうございました。