プロが教えるわが家の防犯対策術!

wordの文書内で上から順番に"有"、"無"などを走査し該当のキーワードがあったら丸で囲む、最終文字列まで上から順番にメッセージボックスに任意のキーワードを入れ、既に丸がある所はスキップみたいなことをしたく下記のような形で組んでみたのですが、エラーとなり思ったように処理ができません。

コンパイルエラー箇所

Set rng = rng.Find(keyWord, After:=rng.End, LookAt:=wdWhole)

検索などしてみましたが、よく理解できるページも見つけられずです。

参考になるサイトやここが悪いというような助言をいただけます幸いです。


元のソース

Sub AddCircleHighlight()
Dim doc As Document
Dim rng As Range
Dim keyWord As Variant
Dim shp As Shape

Set doc = ActiveDocument

' "有"と"無"のリスト
keyWord = Array("有", "無")

For Each keyword In keyWord
For Each rng In doc.StoryRanges
Do
Set rng = rng.Find(keyword, LookAt:=wdWhole)
If Not rng Is Nothing Then
' 既に〇が付いている場合はスキップ
If InStr(rng.Text, "〇" & keyword & "〇") = 0 Then
Set shp = doc.Shapes.AddShape(msoShapeOval, rng.Information(wdHorizontalPositionRelativeToPage), _
rng.Information(wdVerticalPositionRelativeToPage), 15, 15)
With shp
.Fill.Visible = msoFalse
.Line.Weight = 1
.Line.ForeColor.RGB = vbBlack
End With
rng.Collapse wdCollapseEnd
End If
Else
Exit Do
End If
Loop
Next rng
Next keyword
End Sub

A 回答 (1件)

WordVBAは経験皆無未満ですがちょっと気になった点。



>既に丸がある所はスキップみたいなことをしたく

の判定に

>Set shp = doc.Shapes.AddShape( ~
で付けた○が
>InStr(rng.Text, "〇" & keyword & "〇") = 0
で判定できるのでしょうか?
こちらですと『○有(無)○』と言う文字列が含まれるかどうかではないかなと思いました。
経験皆無なので或いは私の勘違いでしたらすみません。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A