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

时间:2017-01-11 10:42:49

标签: excel vba excel-vba textbox

我在这里遇到了关于使用VBA从Excel中的textBox获取文本的答案:

Get the value of a textbox to a cell

我今天发表了评论,但不确定这是否会被提起我以为我会问这个问题。

我的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 个答案:

答案 0 :(得分: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属性

在下面的第二行代码中,尝试填充Textbox长度为32,768个字符的字符串:

strFill = VBA.String(32768, "x")
shp.TextFrame.Characters.Text = strFill