|
|
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Помогите начинающему. Плиз! Как запустить макрос после выхода из группы ячеек, при условии что в одной из них было произведено изменение, (предположим что контролируемые ячейки находятся в первых двух колонках в 5 первых строчках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2009, 22:23 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Max_FrПомогите начинающему. Плиз! Как запустить макрос после выхода из группы ячеек, при условии что в одной из них было произведено изменение, (предположим что контролируемые ячейки находятся в первых двух колонках в 5 первых строчках. Давайте проясним. У Вас есть по сути 2 массива ячеек: 1) А1:В5 2) Все остальное Возможны четыре варианта: 1) Изменение было в одной из ячеек первого массива и затем была выбрана ячейка в пределах этого же массива 2) Изменение было в одной из ячеек первого массива и затем была выбрана ячейка за пределом первого массива 3) Изменения не было в одной из ячеек первого массива и затем была выбрана ячейка в пределах этого же массива 4) Изменения не было в одной из ячеек первого массива и затем была выбрана ячейка за пределом первого массива В каком из этих случаев должен запуститься макрос ? Во втором варианте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2009, 23:44 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
В Лист1 добавляете код: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A1:B5")) Is Nothing Then MsgBox "Макрос запущен!" 'Вот тут запуск макроса End If End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2009, 23:53 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
см.файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2009, 23:55 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
W_I_N_T_E_R, Спасибо, подобного результата мне удалось добиться, вот таким способом: Private Sub Worksheet_Change(ByVal Target As Range) If (Target.Address = "А1:В5") Then Application.EnableEvents = False MsgBox (" ") Application.EnableEvents = True End If End Sub наверно я не корректно сформулировал вопрос, задача запускать макрос в момент потери фокуса массивом (так называется в Аксесе, как в Екселе пока не знаю, недавно залез в эту область в нем), при выходе из него как минимум, как максимум запустить при выходе, при условии что были сделаны изменения в массиве, (объясню почему такая задача, макрос который нужно запустить выполняется 12-15 секунд, и при этом соответственно блокирует все действия в таблице, назвать это неудобством слишком скромно....) Пробовал запускать эту функцию в Private Sub Worksheet_Deactivate() от туда не работает. Есть ли вариант решения моей задачи? (использовать запуск с кнопки не лучший вариант) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 10:22 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Max_Frнаверно я не корректно сформулировал вопрос Наверное (и так и не захотели прояснить задачу, хотя я преложил Вам), и дальше запутали еще больше... Max_Fr...задача запускать макрос в момент потери фокуса массивом... Max_Fr...как максимум запустить при выходе ... - это получение фокуса. Если же Вам нужно такое: m2) Изменение было в одной из ячеек первого массива и затем была выбрана ячейка за пределом первого массива ( выбрана сразу же , то есть без нажатия Enter, а выделена другая ячейка за пределами массива) Тогда, измените код от W_I_N_T_E_R вот здесь: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 10:47 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
mТогда, измените код от W_I_N_T_E_R вот здесь Сорри, не измените, а добавьте мою строчку... Вообщем, вот так должно быть: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 10:52 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
m, возвращаясь к предложенному списку + дополнение 1) Изменение было в одной из ячеек первого массива и затем была выбрана ячейка в пределах этого же массива ( макрос не запускаем) 2) Изменение было в одной из ячеек первого массива и затем была выбрана ячейка за пределом первого массива (макрос запускаем) 3) Изменения не было в одной из ячеек первого массива и затем была выбрана ячейка в пределах этого же массива ( макрос не запускаем) 4) Изменения не было в одной из ячеек первого массива и затем была выбрана ячейка за пределом первого массива ( макрос не запускаем) Наиболее подходящий вариант №2 - Изменение было в одной из ячеек первого массива и затем была выбрана ячейка за пределом первого массива - с предложенной корекцией кода все отлично заработало -ОК! - но - после изменений в одной из ячеек массива и переходе в следующую ячейку того же массива , не производя в ней изменений, далее выход из массива - макрос не запускается а должен, ведь внутри массива изменения производились. Можно ли дополнить коррекцию кода чтоб эти условия выполнялись. Заранее благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 11:10 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
m, при изменении тоже работает, тенкс, но главную задачу к сожалению не выполняет,.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 11:19 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Я вижу такой вариант: Создаем скрытый лист со значениями из массива А1:В5 В момент, когда происходи выделение ячейки за пределами массива в активном (не скрытом) листе, макрос сверяет существующие значения в массиве А1:В5 со значениями, занесенными туда ранее. Если они не совпадают, тогда значения в скрытом листе переписуются и запускается макрос. Если совпадают, ничего не происходит. Такое подходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 11:23 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Есть в коде еще неприятная мелочь - при удалении (Delete) данных из ячейки не воспринимается как изменение, странно. MsgBox - нет запуска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 11:25 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
m, как вариант, почему бы и нет, тем более что есть возможность сделать это и на том же листе в скрытой зоне, где живут все формулы ( для упрощения задачи)... вопрос как это воплотить в коде (когда знания VBA на уровне 1 %) опять же нужна помощь знатока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 11:31 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
m, в приложенном файле вариант в таблицы вопрос как проверить Н9, и при нарушении запустить MsgBox ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 11:53 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
m,m, в приложенном файле вариант в таблицы вопрос как проверить Н9 после выхода из массива, и при нарушении запустить MsgBox ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 11:56 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Max_Fr, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 11:58 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
принимайте... немного изменил расположение на листе... разбиретесь. Появился еще один индикатор. Попробуйте разобраться зачем он нужен. Тестируйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 12:27 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
m, Огромное СПАСИБО. отдельное спасибо за "фокус" с циклом MsgBox, пришлось повнимательней почитать код, в поисках заложенной ошибки (в другом месте), на SendKeys реагирует также как и на Enter, благодарю за урок. моя проблема решена, осталось отредактировать под мою задачу и немного упростить (удалось облегчить задачу оставив в качестве массива один столбец.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 13:30 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Max_Frна SendKeys реагирует также как и на Enter, благодарю за урок А Вы мне расскажите, в чем урок-то был ? :)... И про SendKeys, что Вы имели ввиду? Я SendKeys использовал чтобы "развыделить" диапазон после копирования (чтоб не бегали муравьи)... ТСпришлось повнимательней почитать код, в поисках заложенной ошибки (в другом месте) И тут опять неясно :)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 13:48 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Все окей, все работает. но при усложнении задачи, увеличение количества таких массивов столкнуся с проблемой, что простым копированием макроса с изменением адресов ячеек приводит к неработоспособности макроса, встал вопрос как его исправить, как определить в нем эти массивы, Вопрос что изменить в макросе для корректной работы. mИ тут опять неясно :)... повторюсь в комментарии - я еще только учусь С благодарностью за помощь и обучение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2009, 17:35 |
|
||
|
Как запустить макрос посе редактирования одной из группы ячеек
|
|||
|---|---|---|---|
|
#18+
Смотрите вложение... Старайтесь объявлять все переменные в одной группе (в самом начале) и давать им внятные названия. Также, по возможности, применяйте циклы. Ну и главной не останавливайтесь на достигнутом :) ! Учитесь, учитесь и еще раз учитесь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2009, 10:44 |
|
||
|
|

start [/forum/topic.php?fid=61&fpage=180&tid=2178878]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 460ms |

| 0 / 0 |
