Доброго дня, коллеги!
Прошу помощи в решении проблемы: Задан именованный диапазон в границах B2:E4 с именем "поле". Необходимо в макросе понять, что событие SheetBeforeDoubleClick в ячейке принадлежит последнему столбцу диапазона "поле".
Как это написать? Помогите, пожалуйста.
На скрепке заготовка.
If Not Intersect(Target, Range("Поле")) Is Nothing Then MsgBox "Вы кликнули в именованном диапазоне -Поле-"
Спасибо огромное за быстрый ответ! Если не затруднит, подскажите, пожалуйста, как записать значение в ячейку именованного диапазона, ну, скажем E3 ?
Range("Поле").Cells(2, 4).Select ' тут задаем смещение относительно первой ячейки им. диапазона
или вам это нужно
If Not Intersect(Target, Range("Поле")) Is Nothing Then Cancel=True: Target=10
-если ячейка принадлежит именованному диапазону Поле то пишем в ячейку по которой кликали 10.
Цитата: GWolf от 10.04.2015, 12:52
событие SheetBeforeDoubleClick в ячейке принадлежит последнему столбцу диапазона "поле".
Если я правильно понял, то речь шла не о всем диапазоне, а именно о последнем столбце. Тогда
If Not Intersect(Target, WorksheetFunction.Index(Range("Поле"), 0, Range("Поле").Columns.Count)) Is Nothing Then MsgBox "Вы кликнули в последнем столбце диапазона -Поле-"
Спасибо, огромное, друзья!
Пригодится оба примера. Т.к. с именованными диапазонами опыт только набираю.
Цитата: _Boroda_ от 10.04.2015, 13:26
If Not Intersect(Target, WorksheetFunction.Index(Range("Поле"), 0, Range("Поле").Columns.Count)) Is Nothing Then MsgBox "Вы кликнули в последнем столбце диапазона -Поле-"
Прошу прощения, уважаемый _Boroda_! Не могли бы Вы объяснить данный листинг. Я не издеваюсь, я правда не понимаю.
Массив - n:m
а - номер столбца - не больше m (для нашего случая а = Range("Поле").Columns.Count) - количество столбцов поля = номер последнего столбца)
МММ = ИНДЕКС(Массив;0;а) даст нам ПОЛНЫЙ столбец под номером а из массива (посмотрите во вложенном файле на примере формулы)
Интерсектом проверяем вхождение Тарджета в МММ, если да, то выводим сообщение.
Цитата: _Boroda_ от 10.04.2015, 14:07
... то выводим сообщение.
Вас понял. Спасибо!
Что бы тема была законченой, на скрепке файлик.
Может кому то будет интересно.
Более естественно использовать не WorksheetFunction.Index, а свойство диапазона Columns: If Not Intersect(Target, Range("Поле").Columns(Range("Поле").Columns.Count)) Is Nothing Then