Взгляните на это свойство (учитывая, что у вас есть таблица на первом листе):
Application.Sheets(1).ListObjects(1).name
Сколько символов может содержать это свойство? Ну, после тестирования нескольких строк я пришел к выводу, что его 255, любая строка с более чем 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"
Этот вид "скрытого" символьного предела появляется повсюду (здесь, здесь, может быть менее конкретным здесь), и похоже, что они не документированы нигде, например, посмотрите на страницу для ListObject.Name, его не указано, сколько символов вы можете сохранить в этой переменной...
Так есть лучший способ определить это? Строки, которые вы устанавливаете в свойствах, хранятся в строке фиксированной длины где-нибудь, к которой можно получить доступ, чтобы определить, какова их максимальная длина, или есть ли какая-либо другая форма документации, которая может быть использована для получения этой информации?
Мне кажется странным эти ограничения персонажей, которые установлены на большинстве строк в стандартных объектах VBA, интересно, какова их цель, почему дизайнеры предпочитают ограничивать "ListObjects.name" до 255 символов и является ли это произвольным значением по умолчанию или это было сознательное решение, которое было принято. Я считаю, что стандартная длина строки this, мне интересно, почему отклонение от этого стандарта.
Подводя итог, которые я сделал выше, и объединить этот вопрос в одно предложение:
Существует ли общий способ определения максимальной длины строки, которая может быть задана в пределах свойства объекта, без предварительного тестирования этого свойства строки, путем предоставления ему другого значения и игнорирования ошибок/проверки на усечение символов?