Finne tekst i tekstruter

September 19  by Eliza

Walter har et regneark som har en rekke tekstbokser i den. Han ønsker å søke gjennom disse tekstboksene for å finne noen bestemt tekst, men Finn og erstatt synes ikke i stand til å finne tekst i tekstboksene. Han lurer på om det er en måte å søke gjennom tekstbokser.

Walter er riktig; du kan ikke finne tekst som ligger i tekstbokser i Excel. For å teste dette, åpnet vi en splitter ny arbeidsbok som er lagt inn en eneste setning i det ("mitt budskap"), og deretter plassert litt tilfeldig tekst og tall i andre celler i regnearket. Så, med tekstboksen ikke er valgt, ble Ctrl + F presset til å søke etter "mitt budskap." Excel pliktoppfyllende rapportert at det ikke kunne finne teksten, selv om det fortsatt var der, i tekstboksen.

Heldigvis kan du søke etter tekst i en tekstboks ved hjelp av en makro. Hver tekstboks i et regneark tilhører Figurer samling, så alt du trenger å gjøre er å gå gjennom hvert medlem av samlingen og se om det inneholder ønsket tekst. Her er en makro som ber om en søkestreng og deretter ser for det i tekstboksene.

Sub FindInShape1 ()
Dim rStart Som Range
Dim SHP Som Shape
Dim sFind As String
Dim STEMP As String
Dim Response

sFind = InputBox ("Søk etter?")
Hvis Trim (sFind) = "" Then
MsgBox "Nothing skrev inn"
Exit Sub
End If
Satt rStart = ActiveCell
For Hver SHP I ActiveSheet.Shapes
STEMP = shp.TextFrame.Characters.Text
Hvis InStr (LCase (STEMP), LCase (sFind)) <> 0 Then
shp.Select
Respons = MsgBox (_
teksten: = shp.Name & vbCrLf & _
STEMP & vbCrLf & vbCrLf & _
"Vil du fortsette?", _
Knapper: = vbYesNo, Tittel: = "Fortsett?")
Hvis Response <> vbYes Deretter
Satt rStart = Nothing
Exit Sub
End If
End If
Neste
MsgBox "No more funnet"
rStart.Select
Satt rStart = Nothing
End Sub

Denne makroen ser gjennom alle figurene i regnearket, ikke bare tekstboksene. Hvis du foretrekker å begrense søket til bare tekstbokser, kan du gå gjennom tekstboksene samling istedenfor Figurer samling; uansett vil fungere fint.

Legg merke til, så vel, at denne tilnærmingen stopper hver gang den finner matchende tekst (tilfelle av teksten spiller ingen rolle) og spør deg om du vil fortsette. Du kan i stedet ønsker en makro som bare markerer den matchende tekst i tekstboksene. Dette kan gjøres med en kortere makro, som vist her:

Sub FindInShape2 ()
Dim SHP Som Shape
Dim sFind As String
Dim STEMP As String
Dim børsnoteringer As Integer
Dim Response

sFind = InputBox ("Søk etter?")
Hvis Trim (sFind) = "" Then
MsgBox "Nothing skrev inn"
Exit Sub
End If
sFind = LCase (sFind)
For Hver SHP I ActiveSheet.Shapes
STEMP = LCase (shp.TextFrame.Characters.Text)
børsnoteringer = InStr (STEMP, sFind)
Hvis børsnoteringer> 0 Deretter
Med shp.TextFrame.Characters (Start: = børsnoteringer, _
Lengde:. = Len (sFind)) Font
.ColorIndex = 3
.Bold = True
Avslutt med
End If
Neste
MsgBox "Ferdig"
End Sub

Denne makroen streker lokalisert tekst med en fet, rød skrift. Når du er ferdig, har du sannsynligvis ønsker å endre teksten tilbake til vanlig tekst. Du kan gjøre det ved hjelp av følgende makro:

Sub ResetFont ()
Dim SHP Som Shape

For Hver SHP I ActiveSheet.Shapes
Med shp.TextFrame.Characters.Font
.ColorIndex = 0
.Bold = False
Avslutt med
Neste
End Sub

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (11281) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Finne tekst i tekstbokser.