获取文本框的值到单元格
我有一个名为TextBox 1
的文本TextBox 1
,其中包含段落。 我用一个叫做profile_reference
的名字( Insert > Name > Define...
)来定义它。
在一个单元格上,我input公式=profile_reference
但我得到的值TextBox 1
。 我想要做的是获得该文本框的实际价值。 那可能吗?
我正在使用PHPparsing器从这个Excel文件中获取值,它不能获得文本框的值,它只能获取单元格的值。 所以我试图将该文本框的值复制到一个单元然后parsing它。
您可以检索文本框的内容,但这不仅仅需要标准的Excel用户界面。
一个文本框是一个Shape对象,并且是Worksheet的Shapes集合的成员。 当您将一个文本框插入到工作表中时,Excel会为其指定一个名称,如“TextBox 1”。 因此,可以参考包含VBA中的文本框的Shape对象(例如)
Worksheets("Sheet1").Shapes("TextBox 1")
由于Shape对象可以包含各种不同的东西(如图片或自选graphics),因此检索文本时会涉及更多的对象,属性和方法。 所需的全部短语是
Worksheets("Sheet1").Shapes("TextBox 1").TextFrame.Characters.Text
它将文本框的内容作为string传递。
但是,这要求您使用由Excel指定的文本框的名称(即“TextBox 1”)。 你已经添加了一个名为“profile_reference”的文本框1的名称,那么如何使用你的名字而不是Excel创build的文本框的内容呢?
名称是名称对象,它是“工作簿的名称”集合的一部分。 所以你可以参考你的具体的名称对象(例如)
ActiveWorkbook.Names("profile_reference")
并且“引用”对象的一部分(使用用户界面指定的位)是
ActiveWorkbook.Names("profile_reference").Value
Name对象的Value属性是Excel公式语法中的一个string,所以在你的情况下这个string是
'="TextBox 1"'
即单引号内的位。 这几乎不是所需的“TextBox 1”string。 因此,使用你的名字来获取文本框的内容需要一点点的VBA,比如:
Dim strTB As String strTB = ActiveWorkbook.Names("profile_reference").Value strTB = Mid(strTB, 3, Len(strTB) - 3) 'Strips unwanted =" and " chars from start/end MsgBox Worksheets("Sheet1").Shapes(strTB).TextFrame.Characters.Text
我使用了一个消息框来显示文本框的内容。 内容可以同样分配给工作表单元格。 如果你愿意的话,你可以用一个简短的用户自定义函数(可能把你的名字作为input参数)包装起来,为你提供一个方便的机制来把文本框的内容放到工作表单元格中。