excel 그림 상자나 텍스트 상자의 내용 찾기

2254 단어 excel
excel에서 사용자가 그림 상자나 텍스트 상자를 사용하여 내용을 입력하여 excel을 더욱 아름답게 보이는 것을 자주 볼 수 있지만, 만약 우리가 찾고 싶은 텍스트 내용이 텍스트 상자나 그림 상자에 있다면, 정상적인 ctrl+F의 검색 기능은 이 문자들을 정상적으로 찾을 수 없습니다.
vba를 사용하여 색인 액자나 텍스트 상자의 내용을 실현해야 합니다. 다음은 기본적인 실현 코드입니다.
Function findInShape(str As String, Optional ByVal sel As Boolean = False) As String()

    Dim strret(1) As String
    Dim strget, strtmp, strdd As String
    strret(0) = ""
    strret(1) = ""
    strtmp = ""
    strget = ""
    
    For Each ws In ThisWorkbook.Worksheets
'        If ws.Index < 4 Then
'            GoTo ConOuter
'        End If

        For Each sh In ws.Shapes
        '
        strshow = strshow + sh.AlternativeText
        On Error GoTo ConInner
        cnt = cnt + 1
        'whether the shape type is AutoShape
        If sh.Type = msoAutoShape Then
        'key process: get description from this AutoShape
        'in order to skip line shape
            On Error Resume Next
'            If Len(sh.AlternativeText) > 0 Then
                strget = sh.TextFrame.Characters.Caption
                If InStr(strget, str) <> 0 Then
                    strtmp = sh.TopLeftCell.Address(False, False)
                    If sel Then
                        'Ok , activate it!
                        ws.Activate
                        sh.TopLeftCell.Select
                        sh.TopLeftCell.Activate
                        'continue ?
                        If MsgBox(ws.Name + "!" + strtmp, vbOKCancel, "continue search?") = vbCancel Then
                            Exit Function
                        End If
                    End If
                    strret(0) = strret(0) + strget + ";"
                    strret(1) = strret(1) + ws.Name + "!" + strtmp + ";"
                    'Exit For
                End If
'            End If
        End If
ConInner:
        Next
ConOuter:
    Next
If Len(strret(0)) > 0 Then
    strret(0) = Left(strret(0), Len(strret(0)) - 1)
    strret(1) = Left(strret(1), Len(strret(1)) - 1)
Else
    strret(0) = "-"
    strret(1) = "-"
End If
    findInShape = strret
End Function

좋은 웹페이지 즐겨찾기