Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: 1 клик = 2 макроса  (Прочитано 13616 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
MickMick
Гость
« : 18-09-2009 07:26 » 

Подскажите, пожалуйста, как можно нажатием одной кнопки запустить два макроса. Зараннее спасибо
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 18-09-2009 07:28 » 

эээ... Выполнить макрос, в котором выполнить 2 макроса )
Записан

MickMick
Гость
« Ответ #2 : 18-09-2009 07:31 » 

Дело в том, что каждый макрос передает данные с текущего листа на другой, и в обоих макросах содержатся цыклы. К сожалению у меня не получается выполнение обоих макросов: либо первый, либо второй.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 18-09-2009 07:40 » 

вариантв такие:

1) разделить логику на 2 макроса. И запустить по почереди

2) переписать в виде одного макроса

Записан

MickMick
Гость
« Ответ #4 : 18-09-2009 07:49 » 

Вот первый макрос:
Sub mak_copy_post()
For n = 5 To 10000
  If Worksheets("Лист 1").Cells(n, 2) = "" Then

  Worksheets("Лист 1").Cells(n, 2).Value = ActiveSheet.Cells(2, 1).Value
  Worksheets("Лист 1").Cells(n, 3).Value = ActiveSheet.Cells(2, 2).Value
  Worksheets("Лист 1").Cells(n, 4).Value = ActiveSheet.Cells(2, 3).Value

  Sheets("Лист 1").Select
  End
  End If
Next n
End Sub

Вот второй макрос:
Sub mak_copy_post_full()
For n = 5 To 10000
  If Worksheets("Лист 2)").Cells(n, 2) = "" Then

  Worksheets("Лист 2)").Cells(n, 2).Value = ActiveSheet.Cells(4, 12).Value
  Worksheets("Лист 2)").Cells(n, 3).Value = ActiveSheet.Cells(4, 13).Value
  Worksheets("Лист 2)").Cells(n, 4).Value = ActiveSheet.Cells(4, 14).Value
  Worksheets("Лист 2)").Cells(n, 5).Value = ActiveSheet.Cells(4, 15).Value

  End
  End If
Next n
End Sub

Мне нужно, чтобы после передачи всех данных отображалась строка из Лист 1, в которую передали данные
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 18-09-2009 07:54 » new

так что ли ?
Код:
Sub mak_copy_post()
For n = 5 To 10000
  If Worksheets("Лист 1").Cells(n, 2) = ""  Then
Worksheets("Лист 1").Cells(n, 2).Value = ActiveSheet.Cells(2, 1).Value
Worksheets("Лист 1").Cells(n, 3).Value = ActiveSheet.Cells(2, 2).Value
Worksheets("Лист 1").Cells(n, 4).Value = ActiveSheet.Cells(2, 3).Value
  End If

  If Worksheets("Лист 2)").Cells(n, 2) = "" Then
Worksheets("Лист 2)").Cells(n, 2).Value = ActiveSheet.Cells(4, 12).Value
Worksheets("Лист 2)").Cells(n, 3).Value = ActiveSheet.Cells(4, 13).Value
Worksheets("Лист 2)").Cells(n, 4).Value = ActiveSheet.Cells(4, 14).Value
Worksheets("Лист 2)").Cells(n, 5).Value = ActiveSheet.Cells(4, 15).Value
  End If

  Sheets("Лист 1").Select
Next n
End Sub
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 18-09-2009 07:58 » 

я только синтаксис не знаю, по моему там остались "лишние детали" в виде двух end ))
Записан

MickMick
Гость
« Ответ #7 : 18-09-2009 08:13 » 

Спасибо. Чуть позже проверю и отпишусь.
Записан
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #8 : 08-12-2010 17:56 » 

в конце макроса 1 строка
mak_copy_post_full
и будет выполнять 2 макрос!
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #9 : 09-12-2010 05:51 » 

если нужно параллельно запустить два макроса, то я бы сделал так
Код:
Public Sub Button_Click 
    MyButtin.Enabled = false
    Application.OnTime Now + TimeValue("00:00:01"), "Macros1"
    Application.OnTime Now + TimeValue("00:00:01"), "Macros2"
    MyButtin.Enabled = true
end sub

и еще, желательно отключить переррисовку экрана Application.ScreenUpdating, а то тормоза будут
Записан

I Have Nine Lives You Have One Only
THINK!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines