Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу Обработка событий в Excel
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
tоkito tоkito вне форума
Member
 
Сообщений: 266
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.07.2005
По умолчанию Обработка событий в Excel - 02.05.2006, 14:07

Подскажите знающие люди, как на уровне макроса реализовать обработку событий в excel, например, чтобы при заполнении ячейки в определенном столбце, соответствующая строка меняла шрифт.
Ответить с цитированием
  (#2 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 02.05.2006, 16:41

Можно использовать событие Worksheet_Change() которое необходимо разместить в модуле соответствующего рабочего листа :

Код:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count = 1 Then
   ' Событие Change возникает при изменении данных, т.е.
   ' не только заполнении, но и удалении значений
   If Target.Column = 3 Then '"C:C"
      Target.EntireRow.Font.Name = "Courier"
   End If
Else
   ' Что нужно делать, когда изменения произошли в
   ' нескольких ячейках или диапазоне ячеек, в вопросе не указано ...
End If
End Sub
Ответить с цитированием
  (#3 (permalink)) Старый
tоkito tоkito вне форума
Member
 
Сообщений: 266
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.07.2005
По умолчанию 02.05.2006, 17:24

Цитата:
.. которое необходимо разместить в модуле соответствующего рабочего листа :
сорри за ламерский вопрос, а как это сделать?
Ответить с цитированием
  (#4 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 02.05.2006, 18:14

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

Что касается самого макроса, то полная версия (основанная на моих догадках) может выглядеть так :

Код:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim iChangeRange As Range, iCell As Range
Set iChangeRange = Intersect(Target, Me.Columns(3)) '"C:C"
If Not iChangeRange Is Nothing Then
   For Each iCell In iChangeRange
       If Not IsEmpty(iCell.Value) Then _
          iCell.EntireRow.Font.Name = "Courier"
   Next
End If
End Sub
Ответить с цитированием
  (#5 (permalink)) Старый
tоkito tоkito вне форума
Member
 
Сообщений: 266
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.07.2005
По умолчанию 02.05.2006, 18:59

биг сенькз пашулька!

пара вопросов если позволите
Код:
1. WTF is '"C:C" ?
2. WTF is _ ??
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 02.05.2006, 19:20

1. Это комментарий, который гласит, что Me.Columns(3) или просто Columns(3) не что иное, как столбец "C:C" или "C" Бессмысленный, на первый взгляд, комментарий, но ... всё изменится, если в примере будет указан, например, столбец 79
P.S. И не забывайте, что вместо номера столбца можно указать его буквенное обозначение ["C", "C:C"]
2. Это символ переноса строки, который я использовал исключительно в эстетических целях.
Ответить с цитированием
  (#7 (permalink)) Старый
tоkito tоkito вне форума
Member
 
Сообщений: 266
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.07.2005
По умолчанию 03.05.2006, 12:24

Ага, ясно.

Еще вопрос. Хочу чтобы строчка заливалась цветом, то есть не шрифт цвет менял. Как это сделать?
Ответить с цитированием
  (#8 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 03.05.2006, 14:56

Замените :
Код:
iCell.EntireRow.Font.Name = "Courier"
на :
Код:
iCell.EntireRow.Interior.ColorIndex = 3
Впрочем, для реализации этой задачи использовать VBA вовсе не обязательно, так как для этого существует условное форматирование. Небольшой пример, применительно к Вашему вопросу можно скачать здесь …
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Excel, сортировка столбцов toshkaexe Delphi 3 11.06.2009 10:07
Обработка документа Excel ETY Visual Basic 0 20.02.2009 03:05
Обработка событий окна _kT DHTML, JavaScript, VBScript 3 24.07.2008 10:27
Обработка событий в приложении pahan C++ Builder 2 26.09.2006 18:01
Обработка событий нажатий клавиш Митька_Димка Delphi 2 26.10.2005 15:40
Обработка событий OnBeforeNavigate2 CppWebBrowser cubereality C++ Builder 0 24.09.2005 13:40
Обработка событий от динамически создаваемых объектов Oleg Tigra C++ Builder 3 30.06.2005 17:21
Обработка событий TCheckTreeView GOre C++ Builder 11 23.11.2004 18:01
Обработка клавиатурных событий диалогом Garik WinAPI 2 05.08.2004 13:38
Обработка событий ActiveX UZZer Visual C++ 2 29.05.2004 00:06
Обработка событий в TDBGRID работа с таблицами jstarks C++ Builder 1 24.05.2004 08:32
Обработка событий клавиатуры и мыши в MS Word Anonymous Visual Basic 0 24.10.2003 11:10



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов