2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Ответить
 • Просмотры: 7
Аватара пользователя
aESThete

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение aESThete »

Pliomera


Цитата:



значение в ячейке, содержащей формулу перевычисляется ДО окончания работы процедуры Worksheet_Change



Наверное вы имели ввиду до вызова процедуры? Т.е., как я понял, сначала делаются все перерасчеты формул (стабилизация таблицы), а потом вызывается процедура обработки события. Будем иметь ввиду.
Аватара пользователя
Pliomera

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение Pliomera »

aESThete


Цитата:



до вызова процедуры?



Да, конечно, до вызова, спасибо за поправку... , а вообще странно, что в VBA нет события листа типа Worksheet_BeforeChange, чтобы можно было извлечь текущие значения из ячеек перед изменением их пользователем.
Аватара пользователя
aESThete

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение aESThete »

Pliomera


Цитата:



а вообще странно, что в VBA нет события листа типа Worksheet_BeforeChange



Как уже говорил, в VBA не силен, но может есть (как в некоторых других) события вида

а) Validate - проверка, в которую передается введенное значение, еще не прописанное в поле (ячейку)

б) Edit - событие перед входом в редактирование (можно все, что нужно, сохранить для последующего использования)



Вообще интересно, как проходят события (вызываются процедуры обработки) при редактировании ячейки.

Идеально, например, вот так: (имхо)

Activate (или Select, или GetFocus?) (кстати, может ловить старое значение здесь? тогда можно обойтись без массива, просто тупо запоминать значение каждой активированной ячейки...)

Edit (?)

Validate (?)

Change (...а здесь обрабатывать)

DeActivate (LostFocus, или новый Select)



Эх... на серьезное программирование времени нет, а вот такие этюды мне нравятся Изображение
Аватара пользователя
Pliomera

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение Pliomera »

aESThete

К сожалению для отдельной ячейки или группы ячеек события не предусмотрены вовсе. Несколько событий есть у рабочего листа, чуть больше - у рабочей книги.

Вот полный и исчерпывающий перечень событий рабочего листа:

Activate

BeforeDoubleCIick

BeforeRightCIick

Calculate

Change

Deactivate

FollowHyperlink

PivotTableUpdate

SelectionChange

Для поставленной выше задачи нам могут быть интересны только Calculate и Change, имхо
Аватара пользователя
aESThete

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение aESThete »

Pliomera

Мдя... Бедненько Изображение

О! SelectionChange - это вроде то что нужно.


Цитата:



Activate (или Select, или GetFocus?) (кстати, может ловить старое значение здесь? тогда можно обойтись без массива, просто тупо запоминать значение каждой активированной ячейки...)



...если она входит в наш диапазон. А потом запомненное обрабатывать в Change.

Оно?
Аватара пользователя
Pliomera

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение Pliomera »

Весь фокус в том, что SelectionChange происходит при ЛЮБОМ изменении выделения, в том числе при выделении строки, столбца, или блока ячеек, а не только одной ячейки. Уже думал на эту тему. Затруднительно ловить варианты выделения, которые могут прийти в голову "изобретательному" юзеру.
Аватара пользователя
aESThete

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение aESThete »

Pliomera

Наверное надо ловить именно выделение одной ячейки (строка "начало Range" и "конец Range" совпадают (равны), соответственно со столбцами).
Аватара пользователя
banshee

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение banshee »

Можно поконкретнее: кодировку чего именно или где именно?
Аватара пользователя
aESThete

Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Сообщение aESThete »

кодировку шрифта

вылезает какая то абракадабра

копирую ее в волрд пад и становятся русские буквы
Ответить

Вернуться в «Microsoft Office (Word, Excel, Outlook и т.д.)»