Think Twice
IT技術メモ | Excelのメモ
Created: 2022-04-12 / Updated: 2022-04-19

VBAでExcelオートシェイプ内の文字列を検索する


目次


コード

以下のような関数(サブプロシージャ)を準備する。

標準モジュール(Module1)
Copy
Option Explicit

Public Sub SearchInAutoShapes(ByRef x_shapes As Object)
    Dim p_shape As Object
    For Each p_shape In x_shapes
        ' グループ化された図形の場合
        If p_shape.Type = MsoShapeType.msoGroup Then
            ' 再帰呼び出し
            SearchInAutoShapes p_shape.GroupItems
        
        {em:comment{' グループ化されていない場合
        Else
            ' テキストがある場合
            If p_shape.TextFrame2.HasText Then
                Dim p_textRange As Office.TextRange2
                Set p_textRange = p_shape.TextFrame2.TextRange
                Dim p_textInShape As String
                p_textInShape = p_textRange.Text
                
                MsgBox p_textInShape
                
                If p_textInShape = "たちつてと" Then
                    p_shape.Select
                End If
            End If
        End If
    Next p_shape
End Sub

呼び出し側

Sheet1
Copy
Option Explicit

Private Sub CommandButton1_Click()
    Dim p_sheet As Worksheet
    Set p_sheet = ActiveWorkbook.ActiveSheet
    SearchInAutoShapes p_sheet.Shapes
End Sub

解説

参考

関連メモ

動くサンプルはこちらからダウンロードできます