2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
-
aESThete
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
Pliomera
Цитата:
значение в ячейке, содержащей формулу перевычисляется ДО окончания работы процедуры Worksheet_Change
Наверное вы имели ввиду до вызова процедуры? Т.е., как я понял, сначала делаются все перерасчеты формул (стабилизация таблицы), а потом вызывается процедура обработки события. Будем иметь ввиду.
Цитата:
значение в ячейке, содержащей формулу перевычисляется ДО окончания работы процедуры Worksheet_Change
Наверное вы имели ввиду до вызова процедуры? Т.е., как я понял, сначала делаются все перерасчеты формул (стабилизация таблицы), а потом вызывается процедура обработки события. Будем иметь ввиду.
-
Pliomera
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
aESThete
Цитата:
до вызова процедуры?
Да, конечно, до вызова, спасибо за поправку... , а вообще странно, что в VBA нет события листа типа Worksheet_BeforeChange, чтобы можно было извлечь текущие значения из ячеек перед изменением их пользователем.
Цитата:
до вызова процедуры?
Да, конечно, до вызова, спасибо за поправку... , а вообще странно, что в VBA нет события листа типа Worksheet_BeforeChange, чтобы можно было извлечь текущие значения из ячеек перед изменением их пользователем.
-
aESThete
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
Pliomera
Цитата:
а вообще странно, что в VBA нет события листа типа Worksheet_BeforeChange
Как уже говорил, в VBA не силен, но может есть (как в некоторых других) события вида
а) Validate - проверка, в которую передается введенное значение, еще не прописанное в поле (ячейку)
б) Edit - событие перед входом в редактирование (можно все, что нужно, сохранить для последующего использования)
Вообще интересно, как проходят события (вызываются процедуры обработки) при редактировании ячейки.
Идеально, например, вот так: (имхо)
Activate (или Select, или GetFocus?) (кстати, может ловить старое значение здесь? тогда можно обойтись без массива, просто тупо запоминать значение каждой активированной ячейки...)
Edit (?)
Validate (?)
Change (...а здесь обрабатывать)
DeActivate (LostFocus, или новый Select)
Эх... на серьезное программирование времени нет, а вот такие этюды мне нравятся
Цитата:
а вообще странно, что в VBA нет события листа типа Worksheet_BeforeChange
Как уже говорил, в VBA не силен, но может есть (как в некоторых других) события вида
а) Validate - проверка, в которую передается введенное значение, еще не прописанное в поле (ячейку)
б) Edit - событие перед входом в редактирование (можно все, что нужно, сохранить для последующего использования)
Вообще интересно, как проходят события (вызываются процедуры обработки) при редактировании ячейки.
Идеально, например, вот так: (имхо)
Activate (или Select, или GetFocus?) (кстати, может ловить старое значение здесь? тогда можно обойтись без массива, просто тупо запоминать значение каждой активированной ячейки...)
Edit (?)
Validate (?)
Change (...а здесь обрабатывать)
DeActivate (LostFocus, или новый Select)
Эх... на серьезное программирование времени нет, а вот такие этюды мне нравятся

-
Pliomera
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
aESThete
К сожалению для отдельной ячейки или группы ячеек события не предусмотрены вовсе. Несколько событий есть у рабочего листа, чуть больше - у рабочей книги.
Вот полный и исчерпывающий перечень событий рабочего листа:
Activate
BeforeDoubleCIick
BeforeRightCIick
Calculate
Change
Deactivate
FollowHyperlink
PivotTableUpdate
SelectionChange
Для поставленной выше задачи нам могут быть интересны только Calculate и Change, имхо
К сожалению для отдельной ячейки или группы ячеек события не предусмотрены вовсе. Несколько событий есть у рабочего листа, чуть больше - у рабочей книги.
Вот полный и исчерпывающий перечень событий рабочего листа:
Activate
BeforeDoubleCIick
BeforeRightCIick
Calculate
Change
Deactivate
FollowHyperlink
PivotTableUpdate
SelectionChange
Для поставленной выше задачи нам могут быть интересны только Calculate и Change, имхо
-
aESThete
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
Pliomera
Мдя... Бедненько
О! SelectionChange - это вроде то что нужно.
Цитата:
Activate (или Select, или GetFocus?) (кстати, может ловить старое значение здесь? тогда можно обойтись без массива, просто тупо запоминать значение каждой активированной ячейки...)
...если она входит в наш диапазон. А потом запомненное обрабатывать в Change.
Оно?
Мдя... Бедненько

О! SelectionChange - это вроде то что нужно.
Цитата:
Activate (или Select, или GetFocus?) (кстати, может ловить старое значение здесь? тогда можно обойтись без массива, просто тупо запоминать значение каждой активированной ячейки...)
...если она входит в наш диапазон. А потом запомненное обрабатывать в Change.
Оно?
-
Pliomera
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
Весь фокус в том, что SelectionChange происходит при ЛЮБОМ изменении выделения, в том числе при выделении строки, столбца, или блока ячеек, а не только одной ячейки. Уже думал на эту тему. Затруднительно ловить варианты выделения, которые могут прийти в голову "изобретательному" юзеру.
-
aESThete
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
Pliomera
Наверное надо ловить именно выделение одной ячейки (строка "начало Range" и "конец Range" совпадают (равны), соответственно со столбцами).
Наверное надо ловить именно выделение одной ячейки (строка "начало Range" и "конец Range" совпадают (равны), соответственно со столбцами).
-
aESThete
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
Как поменять кодировку в MS Excel ХР?
-
banshee
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
Можно поконкретнее: кодировку чего именно или где именно?
-
aESThete
Re: 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
кодировку шрифта
вылезает какая то абракадабра
копирую ее в волрд пад и становятся русские буквы
вылезает какая то абракадабра
копирую ее в волрд пад и становятся русские буквы