I need to create a stopping condition for my program

拟墨画扇 提交于 2019-12-25 14:29:16

问题


I have a program that highlights all the words between a start and end point and loops through the extract to find the same conditions. Program works well, except it does not stop looping. I have to break the running program to stop it. can someone please help me write up a condition that says if the end is reached and the start and end condition don't to exist, to stop the program.

Sub SomeSub1()

Dim StartWord As String, EndWord As String
Dim Find1stRange As range, FindEndRange As range
Dim DelRange As range, DelStartRange As range, DelEndRange As range

Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Setting up the Ranges
Set Find1stRange = ActiveDocument.range
Set FindEndRange = ActiveDocument.range
Set DelRange = ActiveDocument.range

'Set your Start and End Find words here to cleanup the script
StartWord = "From: Yussuf Ismail"
EndWord = "Kind regards"

'Starting the Find First Word
With Find1stRange.Find
    .Text = StartWord
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False

    'Execute the Find
    Do While .Execute
        'If Found then do extra script
        If .Found = True Then
            'Setting the Found range to the DelStartRange
            Set DelStartRange = Find1stRange
            'Having these Selections during testing is benificial to test your script
            DelStartRange.Select

            'Setting the FindEndRange up for the remainder of the document form the end of the StartWord
            FindEndRange.Start = DelStartRange.End
            FindEndRange.End = ActiveDocument.Content.End

            'Having these Selections during testing is benificial to test your script
            FindEndRange.Select


            'Setting the Find to look for the End Word
            With FindEndRange.Find
                .Text = EndWord
                .Execute

                'If Found then do extra script
                If .Found = True Then
                    'Setting the Found range to the DelEndRange
                    Set DelEndRange = FindEndRange

                    'Having these Selections during testing is benificial to test your script
                    DelEndRange.Select

                End If

            End With

            'Selecting the delete range
            DelRange.Start = DelStartRange.Start
            DelRange.End = DelEndRange.End
            'Having these Selections during testing is benificial to test your script
            DelRange.Select
DelRange.HighlightColorIndex = wdPink
            'Remove comment to actually delete




        End If      'Ending the If Find1stRange .Found = True
    Loop        'Ending the Do While .Execute Loop
End With    'Ending the Find1stRange.Find With Statement


End Sub

回答1:


It keeps on going because of the Application.DisplayAlerts = False

This will remove the "Search has reached the end of the document. Do you want to continue searching at the beginning?" message.

If you remove the Application.DisplayAlerts = False then it will stop at the end of the document and that message will pop up.

Also change the following in the initial Find:

.Wrap = wdFindAsk

To

.Wrap = wdFindStop

this will then not ask the question and just stop the Find.



来源:https://stackoverflow.com/questions/35063151/i-need-to-create-a-stopping-condition-for-my-program

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!