|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
09.06.2008, 20:39 | #1 |
Старожил
Регистрация: 12.05.2007
Сообщений: 2,339
|
Перенос макроса в модуль
Вот макрос для листа, как его "воткнуть" в модуль?
Что означает "Target" и "Target.Row ", и "Me."???? Private Sub Worksheet_Change(ByVal Target As Excel.Range) iRow& = Target.Row - 31: iStep& = iRow& \ 48 If Not Intersect(Target, _ Me.Range("I31:I36").Offset(iStep& * 48)) Is Nothing Then ------------------------------------------------------ End If End Sub |
09.06.2008, 21:32 | #2 |
Форумчанин
Регистрация: 21.08.2007
Сообщений: 292
|
Target - ячейка, в которой произошло изменение
Target.Row - номер строки ячейки, в которой произошло изменение Me - Лист, где отслеживаются изменения ячеек (ссылка на родителя) - Me у листа - сам лист (чтобы не писать Лист1, Лист2 и т.д.) - Me у формы - сама форма (чтобы не писать UserForm1, UserForm2 и т.д.) |
09.06.2008, 21:39 | #3 |
Старожил
Регистрация: 12.05.2007
Сообщений: 2,339
|
А в модуль как перенести?
Если вместо Private Sub Worksheet_Change(ByVal Target As Excel.Range) Пишу Sub zxc() Dim Target As Range Ошибка, а почему? |
09.06.2008, 22:10 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
процедуру
Private Sub Worksheet_Change(ByVal Target As Excel.Range) с листа в модуль перенести нельзя, точнее можно, но она не будет там срабатывать при изменении данных на листе. Она должна находиться на листе и быть обьявлена именно так. Если есть желание, чтобы что-то происходило в модуле при каждом изменении на листе необходимо от сюда, из Private Sub Worksheet_Change(ByVal Target As Excel.Range) вызвать любую процедуру обьявленную в модуле
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
09.06.2008, 22:24 | #5 | |
Старожил
Регистрация: 12.05.2007
Сообщений: 2,339
|
Цитата:
А мне как раз и не надо, что бы срабатывала при изменений. Мне надо, нажать кнопку и только тогда прошли изменения. |
|
09.06.2008, 22:56 | #6 | |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Цитата:
если "как раз и не надо" - то удалить ее с листа она и не будет работать. а если надо навесить на лист кнопку, при нажатии на которую запуститься определенная процедура, то: 1. создаем процедуру (как минимум написать sub ИМЯмя и нажать Enter чтобы Эксель дописал end sub) 2. в меню "Вид" / "Панели инструментов" выбрать "Формы", отметить курсором элемент "Кнопка" и задать габариты кнопки на листе. Эксель сделает на ней надпись Кнопка 1 (если это первая кнопка на листе), и сразу же предложит выбрать процедуру, которая будет срабатывать при клике на кнопку. зачем мы семь ответов маемся с Private Sub Worksheet_Change(ByVal Target As Excel.Range) - не пойму.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
09.06.2008, 23:13 | #7 |
Старожил
Регистрация: 12.05.2007
Сообщений: 2,339
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автоматический запуск макроса | Len@ | Microsoft Office Excel | 6 | 23.07.2008 12:05 |
Создание SetUp для макроса | Romuald | Microsoft Office Excel | 3 | 06.06.2008 12:23 |
Привязка макроса к кнопке | VisuaL | Microsoft Office Excel | 7 | 10.05.2008 07:04 |
Запись макроса | valerij | Microsoft Office Excel | 5 | 01.12.2007 00:49 |