Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: GWolf от 10.04.2015, 12:52

Название: В границах ли именованного диапазона я?
Отправлено: GWolf от 10.04.2015, 12:52
Доброго дня, коллеги!
Прошу помощи в решении проблемы: Задан именованный диапазон в границах B2:E4 с именем "поле". Необходимо в макросе понять, что событие SheetBeforeDoubleClick в ячейке принадлежит последнему столбцу диапазона "поле".
Как это написать? Помогите, пожалуйста.

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