Показать полную графическую версию : [архив] Microsoft Excel 2003 и более ранние версии
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" совпадают (равны), соответственно со столбцами).
Как поменять кодировку в MS Excel ХР?
aESThete
22-09-2005, 09:47
Можно поконкретнее: кодировку чего именно или где именно?
кодировку шрифта
вылезает какая то абракадабра
копирую ее в волрд пад и становятся русские буквы
Какой шрифт использован? Попробуй поменять на один из стандартных (Arial и т. п.). Если не помогает, то проверяй, полностью ли включена подержка русского языка (фильтр и поиск по слову "русский" тебе поможжет).
И в свойствах щрифта выстави "Кириллический"
Спасибо. Установил старославянский шрифт. Красиво, правда на официальный документ не тянет, но пойдет.... Эка штуковина заковыристая... блаблабла
Excel. Нужно обьеденить несколько ячеек подряд в одной строке в одну без потери данных по всему листу.
Rudy
См. п.1 моего ответа в этой теме - Microsoft Exel. Формула или макрос для сравнения списков? (http://forum.oszone.net/showthread.php?t=54277)
Если не то, то пиши конкретнее (если подойдет, то тоже - напиши...).
Если не то, то пиши конкретнее
Нужно во всех строках объединить три столбца подряд: |фамилия|имя|отчество| в один без потери данных: |фамилия_имя_отчество|
Rudy
Допустим в А2 - Фамилия, в B2 - Имя, в C2 - Отчество. Тогда в D2 пишем=A2&" "&B2&" "&C2
Вот и будет все в одном столбце, разделенное пробелами. Если нужно что-то типа: Фамилия, Имя Отчество, то между первыми кавычками вместо пробела ставьте запятую. Смысл, надеюсь, понятен.
RudyЦитата:
Если не то, то пиши конкретнее
Нужно во всех строках объединить три столбца подряд: |фамилия|имя|отчество| в один без потери данных: |фамилия_имя_отчество|Ну и? Что тебя не устраивает в предложенном мной варианте?
Хотя предложенный Vadikan'ом вариант ИМХО все же более эффективен. Я в своих разборках с формулами совсем про операторы забыл...
Greyman
Сорри, я твой вариант даже не смотрел.
Спасибо Vadikan
=A2&" "&B2&" "&C2 Подходит.
Посоветуй, как можно минимум команд по этому принципу объединить данные по всему листу, к примеру: |=A+B+C|; |=C+D|; |=E+F+G+H|; и.т.д.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC