我在这里遇到了关于使用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个字符?"
答案 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