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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.07.2008, 16:28   #1
neugadal
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 19
По умолчанию Обработка события Updated не всего листа, а лишь одной ячейки

Пытаюсь программировать на Visul Basic 6.0 и столкнулся вот с каким вопросом. В форме ввёл объект OLE - связь с EXCEL-листом - и обработку события Updated. Но подпрограмма соответствующая запускается при всяком изменении EXCEL-листа, а мне бы хотелось чтобы лишь при изменении определённой ячейки в нём, а то слишком часто получается. Но не знаю как это сделать - подскажите пожалуйста.
neugadal вне форума
Старый 17.07.2008, 16:37   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

где-то так, событие происходит при активации яч. А2
Код:
Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$2" Then
          Form_SelectDate.Show
    End If
End Sub
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 17.07.2008, 17:11   #3
neugadal
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 19
По умолчанию

Пока не очень понимаю, буду пробовать. Не подскажите где можно скачать описание употреблённых Вами команд, а то у меня даже хелпа никакого нету, только скачанные из инета книжки для начинающих, там таких команд вообще нету.
neugadal вне форума
Старый 17.07.2008, 23:26   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Да здесь, вроде, особо понимать нечего:
1. Сработать при изменениях на листе
2. если изменения произошли в яч. А2
3. Показать форму Form_SelectDate
ВАЖНО: код должен располагаться в модуле листа, на котором отслеживаются изменения.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 20.07.2008, 13:10   #5
neugadal
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 19
По умолчанию

Понятно. Просто я подумал, что хорошо бы было если бы процедура-событие активизировалась не при любом изменении листа, а лишь при изменении определённой ячейки в нём. Ну просто чтобы не загружать процессор. Наподобие как таймер можно установить на произвольный interval, и на меньшие значения interval процедура активизироваться не будет. Но видимо это невозможно, только на весь лист.
neugadal вне форума
Старый 20.07.2008, 14:10   #6
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
хорошо бы было если бы процедура-событие активизировалась не при любом изменении листа, а лишь при изменении определённой ячейки в нём.
так ведь в приведенном примере так оно и есть - процедура срабатывает ТОЛЬКО при изменении в яч. А2.
что не так?
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 20.07.2008, 14:45   #7
neugadal
Пользователь
 
Регистрация: 17.07.2008
Сообщений: 19
По умолчанию

я понимаю так что процедура срабатывает при любом изменении листа, а далее в процедуре уже анализируется та ли ячейка изменилась или не та. Но процедура в любом случае активизируется, в ней срабатывает оператор IF - так ведь?
neugadal вне форума
Старый 20.07.2008, 18:18   #8
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Подмигивание А надо ли залезать в такие дебри?

VictorM, что-то я не понял, при чём здесь событие Worksheet_SelectionChange.
Речь явно должна идти о
Private Sub Worksheet_Change(ByVal Target As Range)

neugadal, Вы поняли верно: событие Worksheet_Change возникает и обрабатывается при любом изменении листа. Но ничего страшного в этом не видно: обработка при несовпадении адреса заканчивается очень быстро.

Отследить изменение одной ячейки (диапазона) можно только за счёт извращений с проверкой данных -- обращения при проверке к некоторой функции через имя диапазона (объект Name книги или листа), используемое в проверочной формуле. Но я бы не советовал - дело тёмное. Если всё же очень хочется - посмотрите A Formula In A Defined Name.
дмидми вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка события нажатия кнопки masm Microsoft Office Access 6 22.08.2011 11:21
Закраска ячейки при наступлении события liberty Microsoft Office Excel 22 23.07.2008 08:36
Как разделить число и текст в одной ячейки на две ячейки. neboskreb Microsoft Office Excel 2 15.04.2008 19:39
Обработка события закрытия окна в С# Kriziun Общие вопросы .NET 2 14.04.2008 14:06