Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2011, 14:13   #1
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию Еще о Range

Уважаемые форумчане, здравствуйте!
Подскажите, что не нравится VBA в моем написании объекта Range.
Суть дела состоит в том, что при условии – если одна ячейка из диапазона ячеек принимает значение «Подрядчик»,- производятся определенные действия макроса (например: Копирование строки).
Есть работающий код для конкретной ячейки D7
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$7" Then
If IsEmpty(Target) Then Exit Sub
If Range("D7") = "Подрядчик" Then
CALL Rows(20).Copy
End If
End If
End Sub
Вопрос.
А, как распространить условие на диапазон ячеек(в случае вставки /удаления строк, адрес может быть и D8 и D6)?
Мое «творение» работать не хочет.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range(Cells(7, 3), Cells(100, 3)) Then
If IsEmpty(Target) Then Exit Sub
If Range(Cells(7, 3), Cells(20, 3)) = "Подрядчик" Then
CALL Rows(20).Copy
End If
End If
End Sub
Благодарю.
Trimbl вне форума Ответить с цитированием
Старый 22.04.2011, 14:58   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Range("d3:d100")) Is Nothing Then Exit Sub
    If IsEmpty(Target) Then Exit Sub

    If Target = "Подрядчик" Then
       Rows(20).Copy
    End If
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 22.04.2011, 15:00   #3
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

выкиньте его совсем(проверку диапазона)

пишите просто:
Private Sub Worksheet_Change(ByVal Target As Range)

If IsEmpty(Target) Then Exit Sub
If target = "Подрядчик" Then
CALL Rows(20).Copy
End If
End Sub
slan вне форума Ответить с цитированием
Старый 22.04.2011, 15:27   #4
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Range("d3:d100")) Is Nothing Then Exit Sub
    If IsEmpty(Target) Then Exit Sub

    If Target = "Подрядчик" Then
       Rows(20).Copy
    End If
End Sub
EducatedFool ! Огромное спасибо.
Trimbl вне форума Ответить с цитированием
Старый 22.04.2011, 15:32   #5
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию

Цитата:
Сообщение от slan Посмотреть сообщение
выкиньте его совсем(проверку диапазона)

пишите просто:
Private Sub Worksheet_Change(ByVal Target As Range)

If IsEmpty(Target) Then Exit Sub
If target = "Подрядчик" Then
CALL Rows(20).Copy
End If
End Sub
slan, весьма признателен за быстрый отклик. Объязательно попробую и Ваш вариант.
Trimbl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
range check error ChEaTeR-abc Помощь студентам 14 07.07.2010 13:58
Имя Range Chelius Microsoft Office Excel 5 26.05.2010 16:29
Проблема с Range miatu Microsoft Office Word 6 07.09.2009 12:06
синтаксис Range ? kievlyanin Microsoft Office Excel 2 23.04.2009 13:32
MS Word: Range kate4ka Общие вопросы Delphi 1 19.02.2008 06:14