Так как только недавно начал работать с VBA прошу у вас помощи. Нужно реализовать следующее: Просматривать определенный диапазон, например F10:AJ20 и если в этом диапазоне в ячейку вводят определенное значение, например "ДЦ" то сразу должно появляться окно с определенной формой (форму уже сделаю сам), и если в этом окне юзер нажимает кнопку ОК, то происходит следующая процедура которую лучше описать по картинке В желтой ячейке вдруг появилось значение ДЦ, то тогда при клике в форме кнопки ОК нужно скопировать данные из зеленых ячеек (т.е. желтая ячейка, это пересечение зеленых) на другой лист, по тексту ясно что положение желтой ячейки может меняться, соответственно и адрес зеленых.
Так как только недавно начал работать с VBA прошу у вас помощи. Нужно реализовать следующее: Просматривать определенный диапазон, например F10:AJ20 и если в этом диапазоне в ячейку вводят определенное значение, например "ДЦ" то сразу должно появляться окно с определенной формой (форму уже сделаю сам), и если в этом окне юзер нажимает кнопку ОК, то происходит следующая процедура которую лучше описать по картинке В желтой ячейке вдруг появилось значение ДЦ, то тогда при клике в форме кнопки ОК нужно скопировать данные из зеленых ячеек (т.е. желтая ячейка, это пересечение зеленых) на другой лист, по тексту ясно что положение желтой ячейки может меняться, соответственно и адрес зеленых.web-master
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [B4:O26]) Is Nothing Then If Target.Count = 1 Then MsgBox "top cell adr=" & Intersect(Rows(3), Target.EntireColumn).Address & " left cell adr=" & Intersect(Columns(1), Target.EntireRow).Address End If: End If End Sub
[/vba]Макрос в код целевого листа. Далее сами.
Пример. (срабатывание, адреса)[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [B4:O26]) Is Nothing Then If Target.Count = 1 Then MsgBox "top cell adr=" & Intersect(Rows(3), Target.EntireColumn).Address & " left cell adr=" & Intersect(Columns(1), Target.EntireRow).Address End If: End If End Sub
[/vba]Макрос в код целевого листа. Далее сами.JayBhagavan
Языком ты или построишь жизнь,или разрушишь ее до основания.Думайте что говорите.(с)А.Хакимов
Сообщение отредактировал JayBhagavan - Четверг, 18.12.2014, 22:39
JayBhagavan, спасибо, то что нужно, все сделал как хотел, но дошел до момента получения значения из ячейки Подскажите, как из вот этого Intersect(Columns(3), Target.EntireRow).Address вытащить значение ячейки? [moder]А почему Вы Правила форума не читаете? Пункт 3, например.
JayBhagavan, спасибо, то что нужно, все сделал как хотел, но дошел до момента получения значения из ячейки Подскажите, как из вот этого Intersect(Columns(3), Target.EntireRow).Address вытащить значение ячейки? [moder]А почему Вы Правила форума не читаете? Пункт 3, например.web-master
Все, сам разобрался Но есть маленькая проблема в этом коде [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [F10:AJ209]) Is Nothing Then If Target = "ДЦ" Or Target = "дц" Then From_Unit.Show End If End If End Sub
[/vba]
Показывает ошибку "run-time error 13" когда выделяю диапазон где есть "ДЦ" и нажимаю DELETE Причем если удалять ячейки по одной все в порядке. Ругается на строку If Target = "ДЦ" Or Target = "дц" Then
Все, сам разобрался Но есть маленькая проблема в этом коде [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [F10:AJ209]) Is Nothing Then If Target = "ДЦ" Or Target = "дц" Then From_Unit.Show End If End If End Sub
[/vba]
Показывает ошибку "run-time error 13" когда выделяю диапазон где есть "ДЦ" и нажимаю DELETE Причем если удалять ячейки по одной все в порядке. Ругается на строку If Target = "ДЦ" Or Target = "дц" Thenweb-master