| 
			| 
					
						| anval 
								Гость
 | 
								|  | «  : 16-04-2004 06:20 »  |  | 
 
 Как должен выглядеть макрос,  который выполняет некоторые действия, как только  в какай-то определенной ячейке(напр, А23), поменялось ее содержимое. Если это сложно, для начала можно упростить – как должен выглядеть макрос,  который выполняет некоторые действия, как только  в какую-то определенную ячейку(напр, А23), ввели значение. Спасибо |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #1 : 16-04-2004 06:59 »  |  | 
 
 Насколько мне известно, у ячейки или у диапазона ячеек нет возможности реагировать на события. Минимальный объект, способный обрабатывать события, - это WorkSheet . Вот что на этот счет говорит справочная система: Change EventOccurs when cells on the worksheet are changed by the user or by an external link.
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 Target    The changed range. Can be more than one cell.
 Таким образом, следует перехватывать событие изменения листа в целом и смотреть, какие именно ячейки изменились (аргумент Target ). Если нужные - соответственно реагировать. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Anonymous 
								Гость
 | 
								|  | « Ответ #2 : 16-04-2004 07:39 »  |  | 
 
 Спасибо за реакцию. Если это не будет большой нагрузкой, напишите, как это можно сделать. Пока VB не владею, по-английски не читаю, а ответ хотелось бы дать. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anval 
								Гость
 | 
								|  | « Ответ #3 : 16-04-2004 07:40 »  |  | 
 
 Спасибо за реакцию. Если это не будет большой нагрузкой, напишите, как это можно сделать. Пока VB не владею, по-английски не читаю, а ответ хотелось бы дать. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Dusk 
								Команда клуба
								
								   Offline 
								Пол:    
								Редкий, но веселый вид
								
								
								
								
								
							 | 
								|  | « Ответ #4 : 16-04-2004 08:44 »  |  | 
 
 Alf, я точно так же и думал, но Target возвращает не изменяемую ячейку, а записываемое значение... но как определить именно изменяемую ячейку я не нашел, поэтому сразу не ответил....   |  
						| 
								|  |  
								|  |  Записан | 
 
 Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставшихОпыт - это то, что появляется сразу после того, как он был так необходим...
 Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
 |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #5 : 16-04-2004 08:47 »  |  | 
 
 Для начала следует завести подпрограмму, которая будет реагировать на изменение содержимого рабочего листа: Private Sub Worksheet_Change)ByVal Target As Range: Как только содержимое какой-от области изменится, она будет вызвана, причем аргумент Range содержит измененные ячейки. Если допустимо одновременное изменение нескольких ячеек, задача становится немного сложнее. Тогда придется перебрать все ячейки диапазона Target (свойство Cells ) и для каждой из них проверить координаты (свойства Row и Column ). Проще, наверное, не получится. А справочной системы по объектной модели Excel на русском я не встречал. Так что придется обратиться за посторонней помощью, там еще много деталей придется выяснять, если нет опыта работы с Excel через COM. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #6 : 16-04-2004 08:57 »  |  | 
 
 Dusk, Target - это объект типа Range. Насколько я помню (а Excel не программировал уж года 4 этак), Value, т.е. значение ячейки, является свойством Range по умолчанию. Так что если полностью не квалифицировать свойство, то и получишь в результате значение. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anval 
								Гость
 | 
								|  | « Ответ #7 : 16-04-2004 11:23 »  |  | 
 
 Спасибо еще раз за информацию. Что-то  чуть-чуть становится яснее, а главное - то, что надо сначала изучить VBA. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #8 : 16-04-2004 11:52 »  |  | 
 
 anval, VBA - это полбеды. Все, о чем до сих пор шла речь, относится скорее к объектной модели Excel. В самом VBA нет ни WorkSheet, ни Range.А еще раньше придется все же выучить английский, поскольку даже в русской версии Excel вся документация по программированию оставлена в оригинале, и никуда без него не двинешься, увы.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anval 
								Гость
 | 
								|  | « Ответ #9 : 20-04-2004 05:15 »  |  | 
 
 И где надо смотреть эту объектную модель EXCEL?Посмотрела сейчас в справке для EXCEL, нашла пару абзацев - как загрузить настройку для COM и больше ничего |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| ysv_ 
								Помогающий    Offline | 
								|  | « Ответ #10 : 20-04-2004 06:43 »  |  | 
 
 anval, VBA - это полбеды. Все, о чем до сих пор шла речь, относится скорее к объектной модели Excel. В самом VBA нет ни WorkSheet, ни Range.
 
 Позвольте не согласится. В VBA есть и то и другое. Вообще справка по VBA вполне подходит для целей автоматизации Excel'я. ... поскольку даже в русской версии Excel вся документация по программированию оставлена в оригинале, и никуда без него не двинешься, увы.
 
 Опять не верно - у меня стоит Excel и дока к VBA - на русском    И где надо смотреть эту объектную модель EXCEL?Посмотрела сейчас в справке для EXCEL, нашла пару абзацев - как загрузить настройку для COM и больше ничего
 
 Справку надо вызывать из редактора Visual Basic (Alt+F11). |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #11 : 20-04-2004 09:00 »  |  | 
 
 anval, VBA - это полбеды. Все, о чем до сих пор шла речь, относится скорее к объектной модели Excel. В самом VBA нет ни WorkSheet, ни Range.
 
 Позвольте не согласится. В VBA есть и то и другое. Вообще справка по VBA вполне подходит для целей автоматизации Excel'я.Не позволю. VBA - это скриптовый  язык для записи макросов, объектная модель которого к самому Excel не имеет ни малейшего отношения. Не верите - попробуйте вызвать VBA в Word и поработать там с WorkSheet. Ну или, к примеру, в MS Visio. Если получится - признаю, что совершенно не знаю VBA. Нет - не обессудьте, вывод сделаю противоположный. ... поскольку даже в русской версии Excel вся документация по программированию оставлена в оригинале, и никуда без него не двинешься, увы.
 
 Опять не верно - у меня стоит Excel и дока к VBA - на русском   И что, таки файл VBAXL10.CHM перевели? Можно полюбопытствовать, что за версия такая? Не иначе спецпоставка какая-то, отродясь его на русском не давали. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #12 : 20-04-2004 09:15 »  |  | 
 
 И где надо смотреть эту объектную модель EXCEL?Посмотрела сейчас в справке для EXCEL, нашла пару абзацев - как загрузить настройку для COM и больше ничего Поищите файлы справки в том каталоге, куда установлен MS Office. У меня это C:\Program Files\Microsoft Office\OFFICE11\1049 (для MS Office 2003). Сам файл называется VBAXL10.CHM. Для других версий Office название может быть другим, но непременно VBAXL*.CHM Из самой справки Excel в принципе тоже есть туда лазейка, но не во всех версиях она реализована нормально, так что я предпочитаю вызывать справку напрямую. Кстати, приобрел недавно MSDN за январь 2004 и был приятно удивлен, увидев там документацию по объектным моделям приложений MS Office. Так что если попадется в продаже, настоятельно рекомендую. Или, если вдруг окажется, что ysv_  и правда досталась русскоязычная справка по Excel, попробуйте выпросить у него, файл не очень велик (меньше 2Мб). |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| ysv_ 
								Помогающий    Offline | 
								|  | « Ответ #13 : 20-04-2004 12:00 »  |  | 
 
 И что, таки файл VBAXL10.CHM перевели? Можно полюбопытствовать, что за версия такая? Не иначе спецпоставка какая-то, отродясь его на русском не давали.
 
 Нет это я проехал  :oops: Уже английский от русского отличить не могу  :oops:  Не позволю. VBA - это скриптовый язык для записи макросов, объектная модель которого к самому Excel не имеет ни малейшего отношения. Не верите - попробуйте вызвать VBA в Word и поработать там с WorkSheet. Ну или, к примеру, в MS Visio. Если получится - признаю, что совершенно не знаю VBA. Нет - не обессудьте, вывод сделаю противоположный
 
 И будете правы. Не внимателен  :oops:  Все, о чем до сих пор шла речь, относится скорее к объектной модели Excel.
 
 Вот ключевая фраза. Так оно и есть. Еще раз извиняюсь  :oops: |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anval 
								Гость
 | 
								|  | « Ответ #14 : 20-04-2004 12:48 »  |  | 
 
 Жаль, что все на английском, а я уж обрадовалась, что хоть где-то в природе существуе это описание на русском.Может, кто-нибудь все-таки встречался хоть с каким-нибудь, пусть даже не очень профессиональным, переводом? Откликнитесь! |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алёна 
								Молодой специалист    Offline 
								Блондинка...
								
								
								
								
								
								   | 
								|  | « Ответ #15 : 25-04-2004 13:31 »  |  | 
 
 Для начала следует завести подпрограмму, которая будет реагировать на изменение содержимого рабочего листа:
 
 Ой, а зачем все так сложно? Ведь можно создать кнопку "Обновить" при нажатии которой  выполняются определенные двйствия. А проверять каждое изменение страницы WorkSheet не совсем оправдано, т.к. скорее всего будет существовать ряд ячеек изменение которых не должно вызывать подпрограмму, а на обработку её будет тратиться лишнее время... я уж обрадовалась, что хоть где-то в природе существуе это описание на русском.
 
 А ты книги смотреть не пробовала, я например видела книгу "Создание макросов в Excel" и вообще если поискать в книгах довольно таки много информации по макросам. |  
						| 
								|  |  
								|  |  Записан | 
 
 Стену можно пробить только головой. Все остальное орудия. |  |  | 
	| 
			| 
					
						| Alf 
								Гость
 | 
								|  | « Ответ #16 : 25-04-2004 18:09 »  |  | 
 
 Все так сложно потому, что anval  спрашивает: Как должен выглядеть макрос,  который выполняет некоторые действия, как только  в какай-то определенной ячейке(напр, А23), поменялось ее содержимое. Если это сложно, для начала можно упростить – как должен выглядеть макрос,  который выполняет некоторые действия, как только  в какую-то определенную ячейку(напр, А23), ввели значение. Спасибо Не хочет человек жать никакие лишние кнопки, хочет, чтобы все автоматически работало. И имеет полное право, для того и компьютер покупали. А если будем экономить "лишнее время" на обработку, он так разленится, что мы за него еще и считать в столбик начнем.[/b] |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| anval 
								Гость
 | 
								|  | « Ответ #17 : 26-04-2004 05:37 »  |  | 
 
 Да, Aif говорит верно - ну не хочет жать человек на кнопку("человек"-это постановщик задачи). А кнопка - это первое, что я ему сделала до того, как сюда с вопросом обратилась.Книги смотрела, даже нашла что-то, как мне показалось, полезное, но пока искала в других магазинах, нету ли лучшего, эта исчезла, так что ищу теперь дальше. Но в справочной системе своя прелесть.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |