PDA

Показать полную графическую версию : [архив] Microsoft Excel 2003 и более ранние версии


Страниц : 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Pliomera
04-09-2005, 20:57
aESThete
до вызова процедуры?
Да, конечно, до вызова, спасибо за поправку... , а вообще странно, что в VBA нет события листа типа Worksheet_BeforeChange, чтобы можно было извлечь текущие значения из ячеек перед изменением их пользователем.

aESThete
05-09-2005, 09:06
Pliomera
а вообще странно, что в VBA нет события листа типа Worksheet_BeforeChange
Как уже говорил, в VBA не силен, но может есть (как в некоторых других) события вида
а) Validate - проверка, в которую передается введенное значение, еще не прописанное в поле (ячейку)
б) Edit - событие перед входом в редактирование (можно все, что нужно, сохранить для последующего использования)

Вообще интересно, как проходят события (вызываются процедуры обработки) при редактировании ячейки.
Идеально, например, вот так: (имхо)
Activate (или Select, или GetFocus?) (кстати, может ловить старое значение здесь? тогда можно обойтись без массива, просто тупо запоминать значение каждой активированной ячейки...)
Edit (?)
Validate (?)
Change (...а здесь обрабатывать)
DeActivate (LostFocus, или новый Select)

Эх... на серьезное программирование времени нет, а вот такие этюды мне нравятся :)

Pliomera
05-09-2005, 21:17
aESThete
К сожалению для отдельной ячейки или группы ячеек события не предусмотрены вовсе. Несколько событий есть у рабочего листа, чуть больше - у рабочей книги.
Вот полный и исчерпывающий перечень событий рабочего листа:
Activate
BeforeDoubleCIick
BeforeRightCIick
Calculate
Change
Deactivate
FollowHyperlink
PivotTableUpdate
SelectionChange
Для поставленной выше задачи нам могут быть интересны только Calculate и Change, имхо

aESThete
06-09-2005, 08:51
Pliomera
Мдя... Бедненько :(
О! SelectionChange - это вроде то что нужно.
Activate (или Select, или GetFocus?) (кстати, может ловить старое значение здесь? тогда можно обойтись без массива, просто тупо запоминать значение каждой активированной ячейки...)
...если она входит в наш диапазон. А потом запомненное обрабатывать в Change.
Оно?

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

aESThete
06-09-2005, 17:06
Pliomera
Наверное надо ловить именно выделение одной ячейки (строка "начало Range" и "конец Range" совпадают (равны), соответственно со столбцами).

banshee
22-09-2005, 09:27
Как поменять кодировку в MS Excel ХР?

aESThete
22-09-2005, 09:47
Можно поконкретнее: кодировку чего именно или где именно?

banshee
22-09-2005, 10:05
кодировку шрифта
вылезает какая то абракадабра
копирую ее в волрд пад и становятся русские буквы

banshee
22-09-2005, 11:24
блин :(

Greyman
22-09-2005, 14:46
Какой шрифт использован? Попробуй поменять на один из стандартных (Arial и т. п.). Если не помогает, то проверяй, полностью ли включена подержка русского языка (фильтр и поиск по слову "русский" тебе поможжет).

[mzd]
23-09-2005, 09:14
И в свойствах щрифта выстави "Кириллический"

banshee
23-09-2005, 16:08
Спасибо. Установил старославянский шрифт. Красиво, правда на официальный документ не тянет, но пойдет.... Эка штуковина заковыристая... блаблабла

Rudy
26-09-2005, 10:21
Excel. Нужно обьеденить несколько ячеек подряд в одной строке в одну без потери данных по всему листу.

Greyman
26-09-2005, 10:55
Rudy
См. п.1 моего ответа в этой теме - Microsoft Exel. Формула или макрос для сравнения списков? (http://forum.oszone.net/showthread.php?t=54277)

Если не то, то пиши конкретнее (если подойдет, то тоже - напиши...).

Rudy
28-09-2005, 09:14
Если не то, то пиши конкретнее
Нужно во всех строках объединить три столбца подряд: |фамилия|имя|отчество| в один без потери данных: |фамилия_имя_отчество|

Vadikan
28-09-2005, 10:24
Rudy
Допустим в А2 - Фамилия, в B2 - Имя, в C2 - Отчество. Тогда в D2 пишем=A2&" "&B2&" "&C2
Вот и будет все в одном столбце, разделенное пробелами. Если нужно что-то типа: Фамилия, Имя Отчество, то между первыми кавычками вместо пробела ставьте запятую. Смысл, надеюсь, понятен.

Greyman
28-09-2005, 15:04
RudyЦитата:
Если не то, то пиши конкретнее


Нужно во всех строках объединить три столбца подряд: |фамилия|имя|отчество| в один без потери данных: |фамилия_имя_отчество|Ну и? Что тебя не устраивает в предложенном мной варианте?

Хотя предложенный Vadikan'ом вариант ИМХО все же более эффективен. Я в своих разборках с формулами совсем про операторы забыл...

Vadikan
28-09-2005, 21:44
Greyman
Сорри, я твой вариант даже не смотрел.

Rudy
29-09-2005, 11:47
Спасибо Vadikan
=A2&" "&B2&" "&C2 Подходит.
Посоветуй, как можно минимум команд по этому принципу объединить данные по всему листу, к примеру: |=A+B+C|; |=C+D|; |=E+F+G+H|; и.т.д.




© OSzone.net 2001-2012