【ExcelVBA】オートシェイプ内の文字検索マクロ(大文字/小文字、全角/半角を区別しない)

shape-find
スポンサーリンク

どうも、あおです。

 

 

Excelで検索文字があるオートシェイプを探したいけど、

Ctrl+Fで検索してもヒットしない。

(図で作成されたWBSを見る場合など)

 

マクロで実現可能なのでメモ。

 

仕様:検索文字があるオートシェイプをすべて選択状態にする

 

 

まず、対象のExcelシートにボタンを配置して、

ボタンのコードに以下を記入。

shape-find-1

 

 

コピペ用

Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim strIn As String
    
    strIn = InputBox("検索対象入力")

    If strIn = "" Then Exit Sub

    If ActiveSheet.Shapes.Count = 0 Then Exit Sub
    
    For i = 1 To ActiveSheet.Shapes.Count
        With ActiveSheet.Shapes(i)
            If .Type = msoAutoShape Then
                If InStr(StrConv(UCase(.TextFrame.Characters.Text), vbNarrow), _
                StrConv(UCase(strIn), vbNarrow)) > 0 Then
                    .Select False
                End If
            End If
        End With
    Next i
End Sub

 

 

 

 

コード記入後、該当シートに戻ります。

ボタンを押して、検索対象の文字を入力します。

shape-find-2

 

 

 

 

該当のオートシェイプが選択されました

shape-find-3

 

Noの「o」が大文字の場合や、No.3の「3」が全角の場合でも

ヒットするようにしています。

 

これで見にくい図版のWBSも、どこにどの番号があるか

パッと位置がわかってGood。