このプロパティを見てください (最初のワークシートにテーブルがある場合):
Application.Sheets(1).ListObjects(1).name
このプロパティには何文字まで含めることができますか? いくつかの文字列をテストした結果、255 文字を超える文字列を使用するとエラーが発生するという結論に達しました。
実行時エラー 5 - 無効なプロシージャ コールまたは引数
このプロパティを見てください:
Application.Sheets(1).ListObjects(1).Summary
このプロパティには何文字まで含めることができますか? 繰り返しますが、いくつかの文字列をテストすると、約 50,000 の数値が得られます。それ以上に設定すると、同じエラーが発生します。ただし、この場合、Excel がクラッシュするか、別のエラーを吐き出すことがあります (複数回試行した後):
Dim i As Integer
Dim a As String
For i = 1 To 5001
a = a & "abcdefghih"
Next i
Application.Sheets(1).ListObjects(1).Summary = a
オブジェクト 'ListObject' のメソッド "Summary" が失敗しました
この種の「隠された」文字制限はいたるところに現れます (ここ、ここ、あまり具体的にはここ、そして古典的にここ)、どこにも文書化されていないようです。たとえば、ページを見てくださいListObject.Nameの場合、その変数に格納できる文字数は記載されていません...
それで、これを決定するより良い方法はありますか?プロパティで設定している文字列は、最大長を判断するためにアクセスできる固定長文字列に格納されていますか、またはこの情報を取得するために活用できる他の形式のドキュメントがありますか?
標準の VBA オブジェクト内のほとんどの文字列に設定されているこれらの文字制限は奇妙に思えます。その目的は何なのか、デザイナーが "ListObjects.name" を 255 文字に制限することを選択した理由、それが任意のデフォルトの制限だったのか、それともそれは意識的に下された決定でした。弦の長さはこれくらいが標準だと思いますが、なぜこの標準からずれているのか不思議です。
上記のポイントを要約し、この質問を 1 つの文に要約すると、次のようになります。
オブジェクトのプロパティ内で設定できる文字列の最大長を決定する一般的な方法はありますか?最初にその文字列のプロパティを別の値を与えてテストし、エラーを無視したり、文字の切り捨てをチェックしたりしませんか?