Walter에는 여러 텍스트 상자가있는 워크 시트가 있습니다. 특정 텍스트를 찾기 위해 이러한 텍스트 상자를 검색하고 싶지만 찾기 및 바꾸기는 텍스트 상자에서 텍스트를 찾을 수없는 것 같습니다. 그는 텍스트 상자를 검색하는 방법이 있는지 궁금합니다.

Walter가 옳습니다. Excel의 텍스트 상자에있는 텍스트를 찾을 수 없습니다. 이를 테스트하기 위해 새로운 통합 문서를 열고 단일 구문 ( “내 메시지”)을 배치 한 다음 워크 시트의 다른 셀에 임의의 텍스트와 숫자를 배치했습니다. 그런 다음 텍스트 상자를 선택하지 않은 상태에서 Ctrl + F를 눌러 “내 메시지”를 검색했습니다. 엑셀은 텍스트 상자에서 텍스트가 여전히 바로 거기에 있음에도 불구하고 텍스트를 찾을 수 없다고 성실하게보고했습니다.

다행히 매크로를 사용하여 텍스트 상자에서 텍스트를 검색 할 수 있습니다. 워크 시트의 각 텍스트 상자는 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

이 매크로는 텍스트 상자뿐만 아니라 워크 시트의 모든 셰이프를 살펴 봅니다. 검색을 텍스트 상자로만 제한하려는 경우 Shapes 컬렉션 대신 TextBoxes 컬렉션을 단계별로 살펴볼 수 있습니다. 어느 쪽이든 잘 작동합니다.

또한이 접근 방식은 일치하는 텍스트를 찾을 때마다 중지되고 (텍스트의 대소 문자는 중요하지 않음) 계속할 것인지 묻습니다. 대신 텍스트 상자에서 일치하는 텍스트를 표시하는 매크로를 원할 수 있습니다. 이것은 다음과 같이 더 짧은 매크로로 수행 할 수 있습니다.

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 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (11281)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.

Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전은 여기에서 찾을 수 있습니다.

link : / excelribbon-Finding_Text_in_Text_Boxes [텍스트 상자에서 텍스트 찾기].