アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelでオートシェイプのテキストボックス内の文字列を検索するマクロを探しています。
ご存知の方がいらっしゃいましたら教えていただけないでしょうか
(検索してヒットすると当該テキストボックスにジャンプするようなマクロが理想です。)

A 回答 (3件)

とりあえず作成してみました。


アクティブシートに対してのみ有効で、対象はオートシェープのみです。
検索にヒットしたものが選択された状態になります。
適当にアレンジしてご利用ください。

Sub test()
Dim se As Shapes, sh() As Variant, key As String
Dim i As Integer, n As Integer, total As Integer

key = Application.InputBox(prompt:="検索する文字を入力してください。", Type:=2)
If (key = "False") Or (key = "") Then Exit Sub
Set se = ActiveSheet.Shapes
ReDim sh(0 To se.Count)
total = 0
n = 0

For i = 1 To se.Count
 If se.Item(i).Type = msoAutoShape Then
  total = total + 1
  se.Item(i).Select
  
  If Not IsError(Selection.Characters.text) Then
   If InStr(Selection.Characters.text, key) > 0 Then
    sh(n) = se.Item(i).Name
    n = n + 1
   End If
  End If
 End If
Next i

If n > 0 Then
 ReDim Preserve sh(0 To n - 1)
 se.Range(sh).Select
 key = Str(n) & "個が該当しました。"
Else
 key = "該当するものはありませんでした。"
End If
MsgBox (Str(total) & "個のAutoShapeのうち" & key)
End Sub
    • good
    • 4

すみません。

ANo.1で、「オートシェイプ」とタイプしたつもりが「ソートシェイプ」になってしまいました。
 オートシェイプに訂正いたしますm(__)m
    • good
    • 2

 slashppppさん、こんにちは。


 私もこのような機能のマクロプログラムがあったら前々から欲しいと思っていました。
しかし、残念ながら解決はかなり難しいらしです。
「文字列を検索してヒットすると当該..にジャンプするような」という要求事項にピッタリなのがエクセルが持っている検索機能です。
そこで、私はオートシェイプに直接テキストを書き込むのではなくて、セルに書き込んだテキストをソートシェイプに表示させる方法を使ってこの問題をクリアしています。
書式は、細かいことは出来ませんがオートシェイプ単位での変更は可能です。
方法は、ヘルプで「オートシェイプまたはテキスト ボックス内にセルの内容を表示する」を検索して下さい。冴子先生が丁寧に教えてくれます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!