Есть файл (вложение) Есть макрос (знаю, что не правильный)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) a = ActiveCell.Row b = 5 c = 11 d = 14
If Cells(a, b).Value = "Нет" Then Cells(a, b + 6).Select If Cells(a, c).Value = "Нет" Then Cells(a, c + 3).Select If Cells(a, d).Value = "Нет" Then Cells(a, d + 5).Select
End Sub
[/vba]
Суть дела следующая: Если в определенном столбце (выделены желтым) появляется текст "Нет" то курсор нужно переместить в след. желтый столбец (показано стрелками в примере) но если там будет другой текст, например "Да" то перемещать курсор как обычно!! Но курсор зацикливается на одной ячейке, как я понял потому, что он в данной строке проверяет условие для "Нет" и видит его как True Помогите написать так, чтобы он проверял "Нет" только в текущей редактируемой ячейке а не во всей строке!! Чтобы не зацикливался!! Ато получается если в строке есть хоть одно значение "Нет" то он ровняется на него а нам это уже не нужно!! Фух... попытался объяснить понятно!
Буду благодарен за любую помощь
Есть файл (вложение) Есть макрос (знаю, что не правильный)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) a = ActiveCell.Row b = 5 c = 11 d = 14
If Cells(a, b).Value = "Нет" Then Cells(a, b + 6).Select If Cells(a, c).Value = "Нет" Then Cells(a, c + 3).Select If Cells(a, d).Value = "Нет" Then Cells(a, d + 5).Select
End Sub
[/vba]
Суть дела следующая: Если в определенном столбце (выделены желтым) появляется текст "Нет" то курсор нужно переместить в след. желтый столбец (показано стрелками в примере) но если там будет другой текст, например "Да" то перемещать курсор как обычно!! Но курсор зацикливается на одной ячейке, как я понял потому, что он в данной строке проверяет условие для "Нет" и видит его как True Помогите написать так, чтобы он проверял "Нет" только в текущей редактируемой ячейке а не во всей строке!! Чтобы не зацикливался!! Ато получается если в строке есть хоть одно значение "Нет" то он ровняется на него а нам это уже не нужно!! Фух... попытался объяснить понятно!
Private Sub Worksheet_Change(ByVal Target As Range) a = ActiveCell.Row b = 5 c = 11 d = 14
If Cells(a, b).Value = "Нет" Then: Cells(a, b + 6).Select: Else: Cells(a, b + 1).Select: Exit Sub If Cells(a, c).Value = "Нет" Then: Cells(a, c + 3).Select: Else: Cells(a, c + 1).Select: Exit Sub If Cells(a, d).Value = "Нет" Then: Cells(a, d + 5).Select: Else: Cells(a, d + 1).Select: Exit Sub End Sub
[/vba]
Так нужно? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) a = ActiveCell.Row b = 5 c = 11 d = 14
If Cells(a, b).Value = "Нет" Then: Cells(a, b + 6).Select: Else: Cells(a, b + 1).Select: Exit Sub If Cells(a, c).Value = "Нет" Then: Cells(a, c + 3).Select: Else: Cells(a, c + 1).Select: Exit Sub If Cells(a, d).Value = "Нет" Then: Cells(a, d + 5).Select: Else: Cells(a, d + 1).Select: Exit Sub End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E1:E100")) Is Nothing Then If Target = "Нет" Then Target(1, 7).Select End If If Not Intersect(Target, Range("K1:K100")) Is Nothing Then If Target = "Нет" Then Target(1, 4).Select End If If Not Intersect(Target, Range("N1:N100")) Is Nothing Then If Target = "Нет" Then Target(1, 6).Select End If End Sub
[/vba]
Цитата
Фух... попытался объяснить понятно!
Похоже не получилось.
А может так?[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E1:E100")) Is Nothing Then If Target = "Нет" Then Target(1, 7).Select End If If Not Intersect(Target, Range("K1:K100")) Is Nothing Then If Target = "Нет" Then Target(1, 4).Select End If If Not Intersect(Target, Range("N1:N100")) Is Nothing Then If Target = "Нет" Then Target(1, 6).Select End If End Sub