Text プロパティは見た目どおり?

"長〜〜〜〜〜い文字列"シリーズ(其の壱)
(Excel2007では 8222文字以上、Excel2003以下では、1025文字以上)
 
セルの値を取得するプロパティには、
 Value プロパティ
 Text プロパティ
とそれぞれ違うものがありますね。
 
どう違うのかというと、
 Value プロパティ … セルの値そのもの
 Text プロパティ … 表示されている見た目のまんま
と思っていれば、ほぼ大丈夫です。
 
「ほぼ」ってどーゆーこと?
それは、"長〜〜〜〜〜い文字列"の場合にちょん切れちゃうからです。
 
百聞は一見にしかず ということで、実験です。
 
まず、

Sub Macro1()
  Dim rngA As Range

  Set rngA = ActiveSheet.Range("A1")
  rngA.ColumnWidth = 100
  rngA.WrapText = True
  rngA.Value = String(1023, "A") & "BC"
End Sub

を実行します。
これで、セルA1に、Aがだっ〜と連なって最後のBC と入っているのが見えるはずです。

ここで、Text プロパティで見えているものを引っこ抜いて、最後の一文字を MsgBox に出してみましょう。
と思って、

Sub Macro2()
  MsgBox Right$(ActiveSheet.Range("A1").Text, 1)
End Sub

というコードが書いて、実行すると、、、C じゃなくて、B が表示されます。
これは、Text プロパティは 1024文字でちょん切るからなんです。
 
MsgBox の代わりに

  Debug.Print ActiveSheet.Range("A1").Text

とすると、一発で分かります。
 
なお、この実験用コードは、Excel97 〜 2003 用です。
Excel2007 でも同様のことを試せると思うのですが、セルにあまりにもたくさんの文字を入れなければならないので、ちょっとばかりメンドクサイ工夫が必要のようです。
 
※.Excel World の 2007年5月1日 22:40 の日記をコピーしています。
http://excel.sns.fc2.com/excel/