LoginSignup
3
2

More than 5 years have passed since last update.

Excel VBA お使いの方へ Range.Text に注意(まさしくセルに現在表示されている文字列が返されます)

Last updated at Posted at 2017-05-01

「まさしくセルに現在表示されている文字列が返されます」って、だから何のこっちゃ...ですが、少々驚きましたので共有します。
(ご存知の方は案外多いかもしれませんが)

数値を表示しているセルで、列の幅が不足していると井桁マーク ## で省略表示されます。

Sub SampleCode()
    MsgBox ActiveSheet.Range("A1").Text & vbCrLf & Format(ActiveSheet.Range("A1").Value)
End Sub

pic.png

アクティブなセルA1に数値 123123 が入っていてかつ、幅が全桁表示できないほど狭い状態(画像のような状態)で上記マクロを実行させると

pic2.png

Range.Text は省略された表示("###")で返されていることがわかります。

Range.Text は、単に値 (Range.Value) に書式 (Range.NumberFormat) などが反映された文字列が入っていると思い込んでおりました...が、違いました。
ちなみに、列の幅が数値表示に対して十分な場合(数値が省略表示されない場合)は、数値が文字列として返されます。

pic3.png

pic4.png

以上です。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2