逗人, 我正在尝试检索工作表中文本框的第二行,
例如:
蓝
米卡拉尔夫
23.05
我想复制名称并在宏的其他部分使用它 文本框是使用插入文本框创建的 名称是TextBox 17 非常感谢你的帮助,
答案 0 :(得分:1)
使用Split
将文本框的所有行都放入数组中:
Dim lines() As String
'Split lines of the textbox into array and remove line breaks
lines = Split(Replace(Me.txtTest.Value, Chr(13), ""), Chr(10))
'print line 2
Debug.Print lines(1)
或者如果你真的需要第二行:
Debug.Print Split(Replace(Me.txtTest.Value, Chr(13), ""), Chr(10))(1)
在这里,您可以直接访问Split函数的第二个元素(类似于数组)
将Me.txtTest
替换为文本框的名称。
答案 1 :(得分:1)
您的TextBox是ActiveX控件还是Form控件:
从它的名字(" TextBox 17"里面有空格)我说它是一个Form控件
无论如何这里是两种可能性的代码
表单控件的解决方案
Function GetStringFromTextBox_Form(textBoxName As String, strngPos As Integer) As String
With ActiveSheet.Shapes(textBoxName).TextFrame.Characters
GetStringFromTextBox_Form = Split(.Text, "")(strngPos - 1)
End With
End Function
使用如下
Sub main()
Dim name As String
name = GetStringFromTextBox_Form("TextBox 17", 2) '<~~ use this if your TextBox is a Form Control
MsgBox name
End Sub
ActiveX控件解决方案
Function GetStringFromTextBox_ActiveX(textBoxName As String, strngPos As Integer) As String
With ActiveSheet.OLEObjects(textBoxName).Object
GetStringFromTextBox_ActiveX = Split(.Text, vbCrLf)(strngPos - 1)
End With
End Function
使用如下
Sub main()
Dim name As String
name = GetStringFromTextBox_ActiveX("TextBox17", 2) '<~~ use this if your TextBox is an Active X Control
MsgBox name
End Sub