すいません、こちらに差し替え願います。
後処理が誤動作しそうだったのと、Balloonの綴りを間違っていた個所を修正しました。
Sub CheckRepeatedBalloon()
Dim oDDoc As DrawingDocument
Dim oBalloons As Balloons
Dim oBalloon As Balloon
Dim oBalloonValueSet As BalloonValueSet
Dim aBalloonValueSet(MaxNumberOfBalloonValues) As BalloonValueSet
Dim NofBalloonSet As Integer
Dim pointer As Integer
Dim blRepeated As Boolean
Dim NofRepeatedBalloon As Integer
' 後処理の都合上、これだけ先に初期化
NofBalloonSet = 0
If ThisApplication.ActiveDocumentType <> kDrawingDocumentObject Then
MsgBox "図面を開いて実行してください"
GoTo END_OF_CheckRepeatedBalloon
End If
' 変数の初期化
Set oDDoc = ThisApplication.ActiveDocument
Set oBalloons = ThisApplication.ActiveDocument.ActiveSheet.Balloons
NofRepeatedBalloon = 0
oDDoc.SelectSet.Clear
For Each oBalloon In oBalloons
For Each oBalloonValueSet In oBalloon.BalloonValueSets
blRepeated = False
For pointer = 0 To NofBalloonSet - 1
If StrComp(aBalloonValueSet(pointer).Value, oBalloonValueSet.Value) = 0 Then
blRepeated = True
' MsgBox "重複 : " & oBalloonValueSet.Value
Call oDDoc.SelectSet.Select(oBalloon)
Call oDDoc.SelectSet.Select(aBalloonValueSet(pointer).Parent)
pointer = NofBalloonSet ' ループ脱出
End If
Next
If blRepeated Then
NofRepeatedBalloon = NofRepeatedBalloon + 1
Else
If NofBalloonSet = MaxNumberOfBalloonValues Then
MsgBox "バルーンの種類が多すぎで終了"
GoTo END_OF_CheckRepeatedBalloon
End If
Set aBalloonValueSet(NofBalloonSet) = oBalloonValueSet
NofBalloonSet = NofBalloonSet + 1
End If
Next
Next
MsgBox NofRepeatedBalloon & "個の重複"
END_OF_CheckRepeatedBalloon: