Подскажите пожалуйста как сделать несколько независимо работающих Private Sub Worksheet_SelectionChange на одном листе. Пример:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal target As Range) 'Signs protection If IsEmpty (Range("W3")) Then If Intersect (target, Range("W3")) Is Nothing Then Exit Sub UserForm2.Show
If IsEmpty (Range("S29")) Then If Intersect (target, Range("S29")) Is Nothing Then Exit Sub UserForm3.Show
Else If Intersect (target, Range("e76,G76,e78,g78,U76,u78,x76,x78")) Is Nothing Then Exit Sub MsgBox "Access Denied!" Range("A77").Select End If End If
End Sub
[/vba]
Если делаю так как указано, то 3 условие работает только после того как вставлено значение в ячейку "W3". Условие 2 вообще не реагирует. Если перед каждым условием поставить ELSE то тогда работают все по очереди. А необходимо чтобы работали независимо.
Заранее спасибо [moder]Для оформления кода есть кнопка #. Исправила[/moder]
Добрый день
Подскажите пожалуйста как сделать несколько независимо работающих Private Sub Worksheet_SelectionChange на одном листе. Пример:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal target As Range) 'Signs protection If IsEmpty (Range("W3")) Then If Intersect (target, Range("W3")) Is Nothing Then Exit Sub UserForm2.Show
If IsEmpty (Range("S29")) Then If Intersect (target, Range("S29")) Is Nothing Then Exit Sub UserForm3.Show
Else If Intersect (target, Range("e76,G76,e78,g78,U76,u78,x76,x78")) Is Nothing Then Exit Sub MsgBox "Access Denied!" Range("A77").Select End If End If
End Sub
[/vba]
Если делаю так как указано, то 3 условие работает только после того как вставлено значение в ячейку "W3". Условие 2 вообще не реагирует. Если перед каждым условием поставить ELSE то тогда работают все по очереди. А необходимо чтобы работали независимо.
Заранее спасибо [moder]Для оформления кода есть кнопка #. Исправила[/moder]SK
Сообщение отредактировал Pelena - Среда, 18.11.2015, 16:48
SK, а если я выделяю диапазон D3:X78, нужно выводить и 2 формы и сообщение? Так подойдет? [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal target As Range) 'Если при выборе более 1-й ячейки не нужно проверять условия, 'раскомменитровать следующую строчку ' If target.Count > 1 Then Exit Sub 'если выделено больше 1 ячейки - выходим
If IsEmpty(Range("W3")) And Not Intersect(target, Range("W3")) Is Nothing Then UserForm2.Show End If If IsEmpty(Range("S29")) And Not Intersect(target, Range("S29")) Is Nothing Then UserForm3.Show End If If Not Intersect(target, Range("e76,G76,e78,g78,U76,u78,x76,x78")) Is Nothing Then MsgBox "Access Denied!" Range("A77").Select End If End Sub
[/vba]
SK, а если я выделяю диапазон D3:X78, нужно выводить и 2 формы и сообщение? Так подойдет? [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal target As Range) 'Если при выборе более 1-й ячейки не нужно проверять условия, 'раскомменитровать следующую строчку ' If target.Count > 1 Then Exit Sub 'если выделено больше 1 ячейки - выходим
If IsEmpty(Range("W3")) And Not Intersect(target, Range("W3")) Is Nothing Then UserForm2.Show End If If IsEmpty(Range("S29")) And Not Intersect(target, Range("S29")) Is Nothing Then UserForm3.Show End If If Not Intersect(target, Range("e76,G76,e78,g78,U76,u78,x76,x78")) Is Nothing Then MsgBox "Access Denied!" Range("A77").Select End If End Sub
Интересный подход. Взять работающий макрос, изменить, внеся поправки, обеспечивающие не работоспособность, и спросить - а почему не работает? Вы что, даже скопировать не можете?
Интересный подход. Взять работающий макрос, изменить, внеся поправки, обеспечивающие не работоспособность, и спросить - а почему не работает? Вы что, даже скопировать не можете?RAN