Версия для слабовидящих
Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

 

= Мир MS Excel/Переход курсора в ячейку по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Переход курсора в ячейку по условию
Alex_Neo Дата: Четверг, 09.10.2014, 18:47 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Есть файл (вложение)
Есть макрос (знаю, что не правильный)

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



Суть дела следующая:
Если в определенном столбце (выделены желтым) появляется текст "Нет" то курсор нужно переместить в след. желтый столбец (показано стрелками в примере)
но если там будет другой текст, например "Да" то перемещать курсор как обычно!!
Но курсор зацикливается на одной ячейке, как я понял потому, что он в данной строке проверяет условие для "Нет" и видит его как True
Помогите написать так, чтобы он проверял "Нет" только в текущей редактируемой ячейке а не во всей строке!!
Чтобы не зацикливался!!
Ато получается если в строке есть хоть одно значение "Нет" то он ровняется на него а нам это уже не нужно!!
Фух... попытался объяснить понятно!

Буду благодарен за любую помощь ;)
К сообщению приложен файл: 4767799.xlsm (15.2 Kb)


Сообщение отредактировал Serge_007 - Четверг, 09.10.2014, 20:13
 
Ответить
СообщениеЕсть файл (вложение)
Есть макрос (знаю, что не правильный)

[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
Помогите написать так, чтобы он проверял "Нет" только в текущей редактируемой ячейке а не во всей строке!!
Чтобы не зацикливался!!
Ато получается если в строке есть хоть одно значение "Нет" то он ровняется на него а нам это уже не нужно!!
Фух... попытался объяснить понятно!

Буду благодарен за любую помощь ;)

Автор - Alex_Neo
Дата добавления - 09.10.2014 в 18:47
_Boroda_ Дата: Четверг, 09.10.2014, 19:32 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16772
Репутация: 6551 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?

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

К сообщению приложен файл: 4767799_1.xlsm (14.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[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
[/vba]

Автор - _Boroda_
Дата добавления - 09.10.2014 в 19:32
gling Дата: Четверг, 09.10.2014, 20:11 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2575
Репутация: 713 ±
Замечаний: 0% ±

2010
А может так?

    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


Цитата
Фух... попытался объяснить понятно!
Похоже не получилось.


ЯД-41001506838083

Сообщение отредактировал gling - Четверг, 09.10.2014, 20:12
 
Ответить
СообщениеА может так?[vba]
    Private Sub Worksheet_Change(ByVal Target As Range)              If Not Intersect(Target; Range("E1:E100")) Is Nothing Then                   If Target = "Нет" Then Тarget(1; 7).Select              End If              If Not Intersect(Target; Range("K1:K100")) Is Nothing Then                   If Target = "Нет" Then Тarget(1; 4).Select              End If              If Not Intersect(Target; Range("N1:N100")) Is Nothing Then                   If Target = "Нет" Then Тarget(1; 6).Select              End If      End Sub
[/vba]
Цитата
Фух... попытался объяснить понятно!
Похоже не получилось.

Автор - gling
Дата добавления - 09.10.2014 в 20:11
Alex_Neo Дата: Пятница, 10.10.2014, 09:28 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Цитата gling

А может так?



Зачет!! Работает!! Спасибо!
 
Ответить
Сообщение
Цитата gling

А может так?



Зачет!! Работает!! Спасибо!

Автор - Alex_Neo
Дата добавления - 10.10.2014 в 09:28
  • Страница 1 из 1
  • 1
Поиск:

Рейтинг@Mail.ru Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!