在文本框中查找文本(Microsoft Excel)
Walter的工作表中包含许多文本框。他想在这些文本框中进行搜索以找到一些特定的文本,但是“查找并替换”似乎无法在文本框中查找文本。他想知道是否有一种方法可以搜索文本框。
沃尔特是对的;您找不到Excel中的文本框中的文本。为了测试这一点,我们打开了一个全新的工作簿,在其中放置了一个短语(“我的消息”),然后在工作表的其他单元格中放置了一些随机的文本和数字。然后,在未选中文本框的情况下,按Ctrl + F来搜索“我的消息”。 Excel忠实地报告说,即使它仍在文本框中,也无法找到文本。
幸运的是,您可以使用宏在文本框中搜索文本。工作表中的每个文本框都属于Shapes集合,因此您所需要做的就是逐步浏览集合中的每个成员,并查看其中是否包含所需的文本。这是一个宏,提示您输入搜索字符串,然后在文本框中查找它。
Sub FindInShape1() Dim rStart As Range Dim shp As Shape Dim sFind As String Dim sTemp As String Dim Response sFind = InputBox("Search for?") If Trim(sFind) = "" Then MsgBox "Nothing entered" Exit Sub End If Set rStart = ActiveCell For Each shp In ActiveSheet.Shapes sTemp = shp.TextFrame.Characters.Text If InStr(LCase(sTemp), LCase(sFind)) <> 0 Then shp.Select Response = MsgBox( _ prompt:=shp.Name & vbCrLf & _ sTemp & vbCrLf & vbCrLf & _ "Do you want to continue?", _ Buttons:=vbYesNo, Title:="Continue?") If Response <> vbYes Then Set rStart = Nothing Exit Sub End If End If Next MsgBox "No more found" rStart.Select Set rStart = Nothing End Sub
该宏可以浏览工作表中的所有形状,而不仅仅是文本框。如果您希望将搜索范围限制为仅文本框,则可以单步执行TextBoxes集合而不是Shapes集合。任一种方法都可以。
还要注意,这种方法在每次找到匹配的文本时都会停止(文本大小写无关紧要),并询问您是否要继续。相反,您可能需要一个仅在文本框中标记匹配文本的宏。可以使用较短的宏来完成,如下所示:
Sub FindInShape2() Dim shp As Shape Dim sFind As String Dim sTemp As String Dim iPos As Integer Dim Response sFind = InputBox("Search for?") If Trim(sFind) = "" Then MsgBox "Nothing entered" Exit Sub End If sFind = LCase(sFind) For Each shp In ActiveSheet.Shapes sTemp = LCase(shp.TextFrame.Characters.Text) iPos = InStr(sTemp, sFind) If iPos > 0 Then With shp.TextFrame.Characters(Start:=iPos, _ Length:=Len(sFind)).Font .ColorIndex = 3 .Bold = True End With End If Next MsgBox "Finished" End Sub
此宏使用加粗的红色字体突出显示找到的文本。完成后,您可能希望将文本更改回普通文本。您可以通过使用以下宏来做到这一点:
Sub ResetFont() Dim shp As Shape For Each shp In ActiveSheet.Shapes With shp.TextFrame.Characters.Font .ColorIndex = 0 .Bold = False End With Next End Sub
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(11281)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置找到用于Excel功能区界面(Excel 2007及更高版本)的本技巧的版本:
链接:/ excelribbon-Finding_Text_in_Text_Boxes [在文本框中查找文本]。