Выйти, если и дальше для - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть цикл for с оператором if.Если выражение «If» истинно, выйдите из if и затем для.Вот код: я хочу, чтобы Rng1 не был в Range1, а затем перейти к следующему rng1.Мне кажется, что это простое решение, но я не могу понять, выход.Заранее спасибо.

Sub me_test()

Dim Range1 As Range
Dim Rng1 As Range
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Please Select Your Range :", xtitledID, Range1.Address, Type:=8)

    For Each Rng1 In Range1
        If Intersect(Rng1, Range("B7:B15")) Is Nothing Then
            MsgBox "Not within the perscribed range." & vbCr & "Please click OK to continue."
        Else
            Rng1.Value = "Good"
        End If
    Next

MsgBox "All Done"

End Sub

Ответы [ 4 ]

0 голосов
/ 07 февраля 2019

Может быть:

Sub me_test()
    Dim rng1 As Range

    Set rng1 = Application.InputBox("Please Select Your Range :", xtitledID, Selection.Address, Type:=8)

    If Union(rng1, Range("B7:B15")).Address =  Range("B7:B15").Address Then 
        rng1.Value = "Good"
    Else
        MsgBox "Not within the perscribed range." & vbCr & "Please click OK to continue."
    End If

    MsgBox "All Done"

End Sub

Вы также можете проверить правильность выбора используемого диапазона:

Sub me_test()
    Dim rng1 As Range

    Do 
        Set rng1 = Application.InputBox("Please Select Your Range :", xtitledID, Selection.Address, Type:=8)
    Loop While rng1 Is Nothing

    If Union(rng1, Range("B7:B15")).Address =  Range("B7:B15").Address Then 
        rng1.Value = "Good"
    Else
        MsgBox "Not within the perscribed range." & vbCr & "Please click OK to continue."
    End If

    MsgBox "All Done"

End Sub
0 голосов
/ 06 февраля 2019

Это должно работать.Это работает на моем конце

Sub me_test()

    Dim Range1 As Range
    Dim Rng1 As Range
    Dim rngIntr As Range

    Set Range1 = Application.Selection
    Set Range1 = Application.InputBox("Please Select Your Range :", xtitledID, Range1.Address, Type:=8)


    For Each Rng1 In Range1
        Set rngIntr = Intersect(Rng1.Cells, Range("B7:B15").Cells)
        If rngIntr Is Nothing Then
            MsgBox "Not within the perscribed range." & vbCr & "Please click OK to continue."
        Else
            Rng1.Value = "Good"
        End If
        Set rngInr = Nothing
    Next

    Set Range1 = Nothing
    Set Rng1 = Nothing

    MsgBox "All Done"

End Sub

0 голосов
/ 06 февраля 2019

Как насчет этого: Отображать Msgbox «Не в пределах ...», только если none из выбранных ячеек находится в требуемом диапазоне.В противном случае продолжите итерацию по выделению и напишите Good в каждой ячейке, которая пересекается с желаемым диапазоном.

Sub me_test2()

Dim Range1 As Range
Dim Rng1 As Range
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Please Select Your Range :", xtitledID, Range1.Address, Type:=8)

If Intersect(Range("B7:B15"), Range1) Is Nothing Then
    MsgBox "Not within the perscribed range." & vbCr & "Please click OK to continue."
Else
    For Each Rng1 In Range1
        If Not Intersect(Rng1, Range("B7:B15")) Is Nothing Then
            Rng1.Value = "Good"
        End If
    Next
    MsgBox "All Done"
End If

End Sub
0 голосов
/ 06 февраля 2019
Sub me_test()

    Dim Range1 As Range
    Dim Rng1 As Range

    Set Range1 = Application.Selection

    Set Range1 = Application.InputBox("Please Select Your Range :", xtitledID, _
                                       Range1.Address, Type:=8)

    Set Range1 = Application.Intersect(Range1, ActiveSheet.Range("B7:B15"))

    If Range1 is nothing then
         MsgBox "No valid cells selected!"
    else
         Range1.Value = "Good"
    end if 

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...