tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 数値の1と文字列の"1"が同じになる理由
投稿日: 2020/12/06(Sun) 19:08
投稿者ヘンリー
私は、VB4.0、5.0、6.0を少し経験したことがございます。

しばらくプログラミングから離れていて、
最近ExcelのVBAを少しやっています。

自分の勉強のために、
とあるVBAの掲示板の投稿に対して、
回答をして差し上げようと思い、
解説用に簡単なコードを作成ていました。
そこで、どうしても納得のいかないことが発生しました。

現在は、VB4.0、5.0、6.0の環境がないので
試すことができず、こちらのVBの掲示板に
質問をさせていただいた次第です。
もし、VB6.0なら「数値の1と文字の列が等しくない」と
判定されるのでしょうか。


私の中では、VBもVBAも以下のコードなら
変わらないと思っているのですが、
どうしても、数値の1と文字列の"1"が
等しく扱われる理由がわかりません。


お分かりの方がいらっしゃいましたら、
ご享受して頂けないでしょうか。
※VB6.0や、VB2005以降だと数値と文字が違うと
判断するかどうかだけでも、構いませんので、
教えていただけるとありがたいです。

何卒宜しくお願い致します。

Sub Sample()
    Dim a As String
    Dim b As Integer
    
    a = "1"
    b = 1
    
  '↓本来、If CStr(b) = a Thenの様に
  ' 型を合わせてから比較、と書くべきとは思うのですが…
    If b = a Then  
    'If文の判定結果がTrueになる理由がどうしてもわかりません
        Debug.Print True 
    Else
        Debug.Print False
    End If
    
    'ここまでのコードで、数値1と文字列"1"が等しく扱われているので、
    '以下のコードを追加したところ、変数aは文字列演算(a+"1"="11")、
    '変数bは数値演算(b+1=2)されています。
    a = a + "1"
    b = b + 1
    
    Debug.Print a
    Debug.Print b

End Sub

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。