半角チルダ

ExcelVBA、その他。
覚え書きや、補足資料などのスクラップブック。
end-u(1037781)

■セルに表示できる最大文字数

2010-04-30 20:00:00 | 雑記
「Excelの限界に挑戦」シリーズ(嘘 :D

2003版『Excel の仕様および制限』
http://office.microsoft.com/ja-jp/excel/HP051992911041.aspx
>セルの内容の長さ (文字列)
>32,767 文字。セルに表示できるのは 1,024 文字まで。数式バーでは 32,767 文字すべての表示が可能。


2007版『Excel の仕様および制限』
http://office.microsoft.com/ja-jp/excel/HP100738491041.aspx
>セルが含むことができる合計文字数
>32,767 文字


..とあります。

『Excel のセルに表示されるのは 1,024 文字のみ』
http://support.microsoft.com/kb/211580/ja

..という記事もあります。

ちょっと整理してみた結論は、
■セル表示形式で[折り返して全体を表示する]にしなければ、シート上に表示されるのは1,024文字まで。
■[折り返して全体を表示する]場合、セル内表示可能文字数は、表示環境と入力内容に依存するので、一概に何文字まで、とは言えない。最大32,767文字の表示が可能。

kb/211580の現象確認手順通りに実行した場合、

Sub test1()
  With Workbooks.Add(xlWBATWorksheet).Sheets(1).Range("A1")
    .Formula = "=REPT(""w"",1024)&""xyz"""
    .WrapText = True
    .Columns.AutoFit
  End With
End Sub

test1実行後。
test1実行後画像

大抵の方の環境では、記事内容どおりではなく、1,025文字以上表示されるのではないでしょうか。
[折り返して全体を表示する]設定では、1,024文字の制限はありません。
この設定を解除すると、シート上には1,024文字までしか表示されません。
右スクロールで確認できます。

Sub test2()
  With Workbooks.Add(xlWBATWorksheet).Sheets(1).Range("A1")
    .Formula = "=REPT(""w"",1023)&""xyz"""
    .Offset(1).Value = .Value
    .Offset(2).Formula = "=RIGHT(A2,3)"
    .Offset(3).Formula = "=LEN(A2)"
  End With
End Sub

test2実行後。
test2実行後画像

セルの列幅行高を拡げて、フォントサイズを小さくし、[折り返して全体を表示する]と、最大32,767文字の表示が可能な事が確認できます。
環境によるかもしれません&全然実用的じゃないですが。

Sub test3()
  With Workbooks.Add(xlWBATWorksheet).Sheets(1).Range("A1")
    '2003は適宜改行が必要(?)
    .Formula = "=" & ThisWorkbook.Name & "!uREPT(""."",32765)&""xyz"""
    '2007はノーマルでOK。
    '.Formula = "=REPT(""."",32765)&""xyz"""
    .Columns.AutoFit
    .WrapText = True
    .RowHeight = 409.5
    .Font.Name = "MS Pゴシック"
    .Font.Size = 7
    .Offset(1).Formula = "=RIGHT(A1,3)"
    .Offset(2).Formula = "=LEN(A1)"
  End With
  ActiveWindow.Zoom = 75
End Sub
'---------------------------------------------------------------------
Public Function uREPT(ByVal arg As String, ByVal cnt As Long)
  Const p As Long = 1148
  Dim ret As String
  Dim i  As Long

  ret = String(cnt, arg)
  For i = p To cnt Step p
    Mid(ret, i) = vbLf
  Next
  uREPT = ret
End Function

test3実行後。
test3実行後画像

ちなみに[縮小して全体を表示する]と...

Sub test4()
  With Workbooks.Add(xlWBATWorksheet).Sheets(1).Range("A1:A2")
    .Item(1).Formula = "=REPT(""."",1024)&""ccc"""
    .Item(2).Formula = "=REPT(""."",1023)&""ccc"""
    .Columns.AutoFit
    .ShrinkToFit = True
  End With
End Sub

test4実行後。
test4実行後画像

1,024文字までですね。

#みぎっ X)

Comment    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ■AddCustomListメソッドの重... | TOP | ■xl2007:ModifyAppliesToRan... »
最新の画像もっと見る

post a comment

ブログ作成者から承認されるまでコメントは反映されません。

Recent Entries | 雑記