VBA文本框中的文本字符串限制

3
我在这里看到了一个关于使用VBA从Excel的文本框中获取文本的答案: 获取文本框的值到单元格 今天我进行了评论,但不确定是否会被注意到,所以我想问一下问题。我的Excel版本是2002/版本10。我的疑问是,这种从 TextBox 返回文本的方法是否限制了返回一定数量的字符/字符串长度。 Worksheets("Sheet1").Shapes("TextBox 1").TextFrame.Characters.Text 这将返回文本,但它没有返回整个字符串。
当我使用以下代码时: Worksheets("Sheet1").Shapes("TextBox 1").TextFrame.Characters.Text = "blah blah blah" 它会将文本设置为"blah blah blah",除非初始文本相当长。在这种情况下,它会覆盖大部分现有文本"blah blah blah",但还包括剩余的文本部分。
我希望这有意义,也希望有人知道答案。
谢谢

****此外**** 实际上,我刚刚看了一下,有趣的是它返回的字符数是255(著名的255)。

因此,考虑到这一点,我认为我的问题需要修改为:“是否有办法绕过这个被限制在255个字符的限制?”

1个回答

3
在我的32位Excel 2013中,限制是32767个字符 - (2^15)-1。尝试运行这个VBA代码,看看你是否会得到和我一样的错误:
Option Explicit

Sub Test()

    Dim ws As Worksheet
    Dim shp As Shape
    Dim strFill As String
    Dim strTest As String
    Dim lng As Long


    Set ws = Sheet1
    Set shp = ws.Shapes.AddTextbox(msoTextOrientationHorizontal, _
        ws.Range("A1").Left, ws.Range("A1").Top, 500, 500)
    strTest = "blah blah blah"

    'enter 32767 x characters in textbox
    strFill = VBA.String(32767, "x")
    shp.TextFrame.Characters.Text = strFill

    'check the string length
    MsgBox Len(shp.TextFrame.Characters.Text)

    'overwrite the string
    shp.TextFrame.Characters.Text = strTest
    MsgBox "overwritten with " & strTest

    'enter 32768 x characters in textbox
    strFill = VBA.String(32768, "x")
    shp.TextFrame.Characters.Text = strFill '<~~ error should occur on this line!

End Sub

错误信息如下:

运行时错误 '1004': 无法设置 Characters 类的 Text 属性

在以下第二行代码中发生,尝试填充一个长度为32,768个字符的字符串到 Textbox 中:
strFill = VBA.String(32768, "x")
shp.TextFrame.Characters.Text = strFill

那么,简单来说,是因为我使用的是非常老的Excel版本(我相信是10.0、2002年版),所以这不起作用吗? - Mike
我预计限制会随版本变化而改变 - 我已将这个相关信息添加到你的问题中。对于Excel 2013,希望有所帮助。为什么不尝试在你的版本上使用255和256的限制来运行代码,并更新你的问题呢? - Robin Mackenzie
你说得对,限制要少得多。谢谢您的回复,我需要重新考虑一下我正在做的事情。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接