2015-11-17 2 views
0

У меня есть следующий код VBA для использования в MS Word 2010. Он должен пройти через документ, найти фигуру и дать мне возможность ее удалить. Проблема, с которой я сталкиваюсь, заключается в том, что выбранная фигура не отображается в окне просмотра, поэтому, когда код спрашивает, хочу ли я удалить найденную форму, я не вижу эту фигуру.VBA for Word 2010 - отобразить выбранную фигуру

Sub ShowShapes() 
Dim myRange As Range 
Dim msgTrap As VbMsgBoxResult 
Dim sPrompt As String 
Dim myDots As Shape 
For Each myRange In ActiveDocument.StoryRanges 
    Do 
     For Each myDots In ActiveDocument.Shapes 
       myDots.Select 
       sPrompt = "Do you want to delete this?" 
       msgTrap = MsgBox(sPrompt, vbYesNoCancel, "Images") 
       Select Case msgTrap 
        Case vbYes 
         Selection.Delete 
        Case vbCancel 
         MsgBox "Cancel was clicked. Exiting Routine", vbCritical, "CANCEL" 
         Exit Sub 
        'Note that Case vbNo is not listed. That is because as the only other option 
        'the routine will proceed to End Select when vbNo is clicked. 
        End Select 
     Next 
     Set myRange = myRange.NextStoryRange 
    Loop Until myRange Is Nothing 
Next 
End Sub 

Я пробовал использовать Application.ScreenUpdating = True без эффекта. Я надеюсь, что есть простая команда, которую я не знаю, но я не смог найти ответ здесь или в другом месте в Интернете. ТИА.

ответ

0

Try: myDots.ScrollIntoView

BTW ваш код имеет логическую проблему. Хорошо, что вы пытаетесь объединить все StoryRanges. Но на следующем уровне вы запрашиваете ActiveDocument.Shapes, что означает - я думаю, не могу проверить, как я нахожусь на мобильной машине в настоящий момент, - вы не будете запрашивать фигуры в StoryRange, к которому вы зациклились. Попробуйте использовать myRange.ShapeRange