秘密基地、どこに作った?

下は敢えて作った例題ですが、
該当のセルの設定を『標準』にすると『等しい』が出ません。
文字列や、数値にすると出ます(等しいと判定されます)
理由が分かりません。
宜しくお願いします。
excel2003です。

Option Explicit
Sub test()
Range("C2").Value = "34567"
Range("C3").Value = "4567"
MsgBox Right(Range("C2").Value, Len(Range("C2").Value) - 1)
MsgBox Range("C3").Value
If Right(Range("C2").Value, Len(Range("C2").Value) - 1) = Range("C3").Value Then MsgBox "等しい3"
End Sub

A 回答 (1件)

>>数値にすると出ます


本当ですか??

標準が駄目な理由は、Right関数が文字列を扱う関数だからです。
その関数の値も文字列として扱われます。

一方でRange("C3").Valueには数値が入るので、比較の右辺は数値として扱われ、型が一致しないのでfalseです。

C3セルの形式を文字列にして置くと、右辺も文字型として扱われtrueになります。

結構面倒で、ここにはいつも気を使ってます。
Right関数、left関数、mid関数は特に注意が要り、中間結果を何処かのセルに一旦入れて、その値と比較するとかが要ります。
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
まず、数値で出るは誤りでした。
色々やっていたので、ケースが錯綜していました、
申し訳ありませんでした。

ご説明で良く分かりました。
確かに、入力を文字にすれば等しいと判断されました。

上記のコードを書いていたのですが、
結果がおかしく質問しました。
ご指摘のように、一旦 as longにクッションして対応していました。
right関数には気を付けます。
お世話になりました。

お礼日時:2024/04/05 20:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A