タイトル : 数値の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 |