确定字符串最大允许长度a的通用方法

Dav*_*ers 11 excel vba excel-vba excel-2016

看看这个属性(假设您在第一个工作表上有一个表):

Application.Sheets(1).ListObjects(1).name
Run Code Online (Sandbox Code Playgroud)

这个属性包含多少个字符?好吧,在测试了几个字符串后,我得出的结论是255,任何超过255个字符的字符串都会导致抛出错误:

运行时错误5 - 无效的过程调用或争论

看看这个属性:

Application.Sheets(1).ListObjects(1).Summary
Run Code Online (Sandbox Code Playgroud)

这个属性包含多少个字符?再次,测试几个字符串,你会得到一个大约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
Run Code Online (Sandbox Code Playgroud)

对象'ListObject'的方法"摘要"失败

这种"隐藏"字符的限制来了所有的地方(在这里,在这里,少在这里具体,所以这里典雅),它似乎并不像他们记录任何地方,例如看看网页对于ListObject.Name,它没有注明你可以在该变量中存储多少个字符...

那么有更好的方法来确定这个吗?您在属性中设置的字符串是否存储在某个固定长度的字符串中,可以访问该字符串以确定它们的最大长度,或者是否可以使用其他形式的文档来获取此信息?

在标准VBA对象中的大多数字符串上设置的这些字符限制很奇怪,我想知道它们的目的是什么,为什么设计者选择将"ListObjects.name"限制为255个字符以及这是否是任意默认限制或是否这是一个有意识的决定.我相信标准的字符串长度是这个,我想知道为什么偏离这个标准.

总结一下我在上面提出的观点并将这个问题浓缩成一句话:

有没有一种通用的方法来确定可以一个对象的属性中设置字符串的最大长度,而不首先给它另一个值,而忽略错误/检查字符截断测试该字符串的财产?

Zac*_*sse -3

最简洁的答案是不。

问候, 扎克·巴雷斯

  • 长答案怎么样?简单的“不”并没有多大帮助。 (4认同)
  • 事实上,你的第一个“回答”只是一句侮辱性的咆哮。它没有给OP提供任何真正的指导,所以我删除了它。这个更好,但只是因为它不那么粗鲁。这不是很有帮助,但至少不会违反网站的[“Be Nice”](http://stackoverflow.com/help/be-nice)政策。我建议您在这里阅读[回答]问题。 (2认同)