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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2014, 19:39   #1
Nalex76
 
Регистрация: 27.01.2014
Сообщений: 5
По умолчанию событие на листе

Уважаемые местные жители.
Помогите советом.
Поделитесь опытом
На листе Open происходят изменение ха счет импорта через DDE
добавляются новые строки.
Как сделать, чтобы запускался , например, макрос 1, при изменении данных на листе
способы типа

Private Sub Worksheet_Change(ByVal Target As Range)

заставить работать не смог
Nalex76 вне форума Ответить с цитированием
Старый 27.01.2014, 19:52   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Private Sub Worksheet_Change
это пользователь с клавиатуры что-то внес или мышью закопипастил

Private Sub Worksheet_Calculate - сработает на изменение данных
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.01.2014, 20:38   #3
Nalex76
 
Регистрация: 27.01.2014
Сообщений: 5
По умолчанию непонятно

вот вариант
взял на этом же или соседнем форуме
если вручную меняю значение 1 из 2 упомянутых ячеек, то выскакивает MBox/.. но фактически значения этих 2 ячеек меняются через dde
изменение Change на Calculate в этом примере не дало результатов

Private Sub Worksheet_change(ByVal Target As Range)
Dim KeyCells As Range

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then

MsgBox "ячейка" & Target.Address & "была изменена"

End If
End Sub
Nalex76 вне форума Ответить с цитированием
Старый 27.01.2014, 20:47   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вам же уже сказали - Worksheet_change не сработает!
Можно использовать событие пересчёта, если завязать на эти ячейки формулы (ну или может какая летучая сработает), или можно завязать на ячейку текстбокс и использовать его события.
Либо изучите SetLinkOnData - но это кажется сложнее реализовать.
У ZVI примеры на форумах есть.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.01.2014, 20:57   #5
Nalex76
 
Регистрация: 27.01.2014
Сообщений: 5
По умолчанию

я говорю про то что Calc// не работает
Nalex76 вне форума Ответить с цитированием
Старый 27.01.2014, 22:13   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Причём тут Calc? Тут Excel
Если Вы про пересчёт - так хоть "купите билет" (С)
Т.е. пропишите формулы.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.01.2014, 23:18   #7
Nalex76
 
Регистрация: 27.01.2014
Сообщений: 5
По умолчанию

какой высокомерный тон!!
ну ладно, вытерплю какое то время.
Private Sub Worksheet_Calculate не работает. возможно вопрос в формулах.
но тогда что это за формулы. я взял данные, что пришли извне, скопировал методом =лист!ячейка.
или какието особенные формулы нужнЫ
Nalex76 вне форума Ответить с цитированием
Старый 27.01.2014, 23:33   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Чего высокомерный? Ну ладно, я обычно не нервничаю

Формулу забейте например сумму этих двух ячеек, или сумму длин, или среднее, или количество занятых в диапазоне - не важно, лишь бы они пересчитались.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.01.2014, 07:19   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
...не важно, лишь бы они пересчитались.
Для того, чтобы на рабочем листе "сработало" событие Worksheet_Calculate, необходимо, чтобы этот лист содержал хотя бы одну пересчитываемую (Volatile) формулу. Например "=СЕГОДНЯ()"
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 28.01.2014, 10:15   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я подозреваю, но не уверен
А проверить негде - не работаю с DDE.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа на одном листе с данными из LISTBOX, данные на другом листе konstantin1990 Microsoft Office Excel 3 22.07.2013 15:15
У динамически созданной формы есть событие OnClick, но само событие не происходит Hunter_bog Компоненты Delphi 25 23.01.2012 23:50
Поиск в листе sasha_prof Microsoft Office Excel 6 24.03.2010 19:20
Событие Worksheet_Change не "ловится" на неактивном листе... Олег* Microsoft Office Excel 4 08.01.2010 00:43
ячейка на одном листе, в которую необходимо подставлять данные из столбца, находящегося на другом листе Ирина Водолагина Microsoft Office Excel 4 04.03.2009 23:38