a = Selection.ShapeRange.TextFrame.Characters.Text
テキストボックスの値が取得できれば、あとは、「InStr」で値を検索することができます。
では、選択したテキストボックスで、テキストボックスの値を検索してみます。
「あいう」が含まれているか検索
選択したテキストボックスの、値を検索してみます。
「あいう」が含まれているかを検索してみます。
Sub TEST1()
'選択したテキストボックスの値を取得
a = Selection.ShapeRange.TextFrame.Characters.Text
'テキストボックスの値を検索
If InStr(a, "あいう") > 0 Then
MsgBox "「あいう」が含まれている"
Else
MsgBox "「あいう」が含まれていない"
End If
End Sub
テキストボックスを選択しておきました。
テキストボックスを選択
では、実行してみます。
テキストボックスの値を検索
結果は、「「あいう」が含まれている」となりました。
テキストボックスの値を検索できています。
VBAで指定したテキストボックスの値を検索
次は、指定したテキストボックスで、値を検索してみます。
「Shape(テキストボックス名).TextFrame.Characters.Text」を使う
指定したテキストボックスから、テキストを取得するには、次のように入力します。
a = Activesheet.Shape(テキストボックス名).TextFrame.Characters.Text
という感じです。
では、指定したテキストボックスで、値を検索してみます。
「あいう」が含まれているか検索
先ほどと同じように、テキストボックスに「あいう」が含まれているか、検索してみます。
テキストボックスを指定する場合は、こんな感じになります。
Sub TEST2()
'指定したテキストボックスの値を取得
a = ActiveSheet.Shapes("正方形/長方形 1").TextFrame.Characters.Text
'テキストボックスの値を検索
If InStr(a, "あいう") > 0 Then
MsgBox "「あいう」が含まれている"
Else
MsgBox "「あいう」が含まれていない"
End If
End Sub
Sub TEST3()
'シート内の全ての図形をループ
For Each a In ActiveSheet.Shapes
'テキストボックスで、「あいう」を検索
If InStr(a.TextFrame.Characters.Text, "あいう") > 0 Then
a.Select False '選択する
End If
Next
End Sub
Sub TEST4()
'シート内の全ての図形をループ
For Each a In ActiveSheet.Shapes
'テキストボックスで、「あいう」を検索
If InStr(a.TextFrame.Characters.Text, "あいう") > 0 Then
a.Select False '選択する
End If
Next
End Sub
では、実行してみます。
テキスト検索で「エラー」となる
という感じで、画像からテキストを取得しようとすると、エラーとなってしまいます。
なので、オートシェイプか吹き出しの場合に検索する、という条件を追加してあげます。
オートシェイプか吹き出しの条件を追加
シート内の図形を検索する際に、オートシェイプか吹き出しである、という条件を追加してみます。
次のようなVBAコードとなります。
Sub TEST5()
'シート内の全ての図形をループ
For Each a In ActiveSheet.Shapes
'オートシェイプ、もしくは、吹き出しの場合
If a.Type = 1 Or a.Type = 2 Then
'テキストボックスで、「あいう」を検索
If InStr(a.TextFrame.Characters.Text, "あいう") > 0 Then
a.Select False '選択する
End If
End If
Next
End Sub
Sub TEST6()
'シート内の全ての図形をループ
For Each a In ActiveSheet.Shapes
'オートシェイプ、もしくは、吹き出しの場合
If a.Type = 1 Or a.Type = 2 Then
'テキストボックスで、「あいう」を検索
If InStr(a.TextFrame.Characters.Text, "あいう") > 0 Then
a.Delete '削除する
End If
End If
Next
End Sub
複数のテキストボックスを用意しました。
複数のテキストボックスを用意
では、実行してみます。
テキストボックスを検索して削除
「あいう」が含まれるテキストボックスを削除できました。
「あいう」が含まれていたら値を取得
最後に、検索できたテキストボックスのテキストを取得する、というのをやってみます。
VBAコードはこんな感じになります。
Sub TEST7()
'シート内の全ての図形をループ
For Each a In ActiveSheet.Shapes
'オートシェイプ、もしくは、吹き出しの場合
If a.Type = 1 Or a.Type = 2 Then
'テキストボックスで、「あいう」を検索
If InStr(a.TextFrame.Characters.Text, "あいう") > 0 Then
'テキストを取得
Debug.Print a.TextFrame.Characters.Text
End If
End If
Next
End Sub