Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
RSS
Макрос для нескольких (определенных) листов книги
 
Прошу помощи

Как изменить созданий макрос, который можно легко применить сразу к нескольким листам. А то каждый раз когда создаю макрос нужно вручную активировать на каждый лист. Поискал здесь, но применить не могу
Вкратце
Нужен шаблон (шапка) на определение листи куда будут вставлятса макрос записаний автоматом.

Заранее большое спасибо
Изменено: qweewert - 23 Сен 2015 00:28:56 (Уточнение)
qweewert
 
2 qweewert
Здравствуйте!

Код
Dim i as Integer
For i = 1 To Sheets.Count 
    If Worksheets(i).Name = <<здесь критерий для отбора листов из их названия>> Then
             ВЫПОЛНЯЕМЫЙ МАКРОС
    End If
 Next i
Изменено: iba2004 - 27 Янв 2013 18:10:40
 
Извиняюсь, но как задать критерий.
qweewert
 
2 qweewert
А как Вы собираетесь назначать листы для выполнения макроса?
Какой-то же критерий должен быть: на этом выполняем, на этом - нет!!!
Изменено: iba2004 - 27 Янв 2013 18:23:04
 
Пишу макрос автомтором. Далее применяю к листам с определенными именами
Извините не селен в екселе
qweewert
 
Код
Dim Wsh As Worksheet
For Each Wsh in ThisWorkbook.Worksheets
If Wsh.Name<>"Итог" Then
.........
End If
Next
 
2 qweewert
Ну по какому принципу Вы решаете на каких из листов выполнять макрос? Или нужно на всех листах, содержащих слово "Точка"? Всегда будет слово "Точка"?
Изменено: iba2004 - 27 Янв 2013 18:25:28
 
пример:
Код
Sub t()
  For Each sh In Sheets(Array("лист2", "лист3", "лист6"))
    sh.[a1].Interior.ColorIndex = 3
  Next
End Sub
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
iba2004 пишет: Или нужно на всех?
Нужно на всех но указанх в макросе.
qweewert
 
Код

Dim i as Integer
For i = 1 To Sheets.Count 
    If Worksheets(i).Name like "Точка*" Then
             ВЫПОЛНЯЕМЫЙ МАКРОС
    End If
 Next i



Попробуйте! Это должно сработать на всех листах имеющих в названии "Точка..." (я не проверял). Посмотрите и другие предложенные коды.
 
ikki. посмотрите что не так делаю
qweewert
 
по-разному называете листы.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Вот для Вашего случая (Ваш макрос переделывать не стал) без покраски ячейки

Код
Sub Macro1()
'
' Macro1 Macro
Dim i As Integer
For i = 1 To Sheets.Count
 If Worksheets(i).Name Like "Точка*" Then
 
 
 Worksheets(i).Activate
 Rows("18:18" ;) .Select
 Selection.Ins ert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
 Range("A18" ;) .Select
 ActiveCell.FormulaR1C1 = "Текст 10-1"
 Range("A19" ;) .Sele ct


 End If
 Next i 

Worksheets("Цена" ;) .Activate

End Sub
Изменено: iba2004 - 27 Янв 2013 18:42:35
 
ikki, исправил, но не работает
qweewert
 
Имя листа "Точка*" может бить разное, как зделать тоже но вписать название каждого листа пооддельности?
qweewert
 
Тогда, скажите мне: на каких листах нужно (или на каких листах НЕ нужно) выполнять макрос.
М.б. такое, что выполнять на всех листах кроме "Цена" и "Итог"?
Изменено: iba2004 - 27 Янв 2013 19:02:07
 
Я написал в файле которой прикрепил:

Как заделать, чтоб МАКРОС(1), который я создал применить сразу к нескольким листам:- Точка1,Точка2,Точка3
qweewert
 
Вот в примере, слово "Точка" у Вас везде встречается.
Какая альтернатива возможна?
Или на "Точка1" нужно, на "Точка2" м.б. не нужно? Так?
Изменено: iba2004 - 27 Янв 2013 19:08:46
 
не всё исправили.
Код
Sub Macro1()
  For Each sh In Sheets(Array("точка1", "точка2", "точка3"))
    sh.Rows(18).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    sh.Range("A18").FormulaR1C1 = "Текст 10-1"
  Next
End Sub
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Код
Sub Macro1()
Dim iList As Variant
Dim i As Integer
iList = Array("Точка1", "Точка2", "Точка3")  
 For i = 0 To UBound(iList)
Sheets(iList(i)).Activate
 Rows("18:18").Select
 Selection.Ins ert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
 Range("A18").Select
  ActiveCell.FormulaR1C1 = "Текст 10-1"
 Range("A19").Select
 Next
 
End Sub
Изменено: Kuzmich - 23 Сен 2015 00:28:03
 
Я повторюсь.

Мне нужно создать шапку для макросов.

Я буду создавать автоматором макрос. Потом буду переносить его в заранее подготовленною шапку.

А применяться ето будет к листам которые впишу в ету шапку. Сечас ето Лист1,лист2,Лист3
qweewert
 
офф. видимо, мы запутали автора темы  ;)
давайте кто-нибудь один добьёт свой вариант?
я из темы ушёл.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
может я неправильно изъясняюсь, попробую так
Если листи книги = Лист1,лист2,лист3 то макрос 1

Прошу прощения, плохо разбираюсь в макросах и их написанию
qweewert
 
А Если листи книги = НЕ Лист1,лист2,лист3 то ....???
 
то ничего делать ненадо
qweewert
 
Ок! Макрос нужно выполнить только на 3 листах?
Вот есть книга с листами "Зима", "Лето", "Осень", "Весна".
Что для Вас послужит причиной выполнения макроса на каких-либо (каком-либо) из перечисленных листов?
 
Например мне нужно на листе Зима добавить несколько строк, заполнить их, и тоже само проделать к листам Лето, Осень, Весна..... Ето идентичные листи!!!

Поэтому я записываю авто макрос на листе Зима и потом на каждом листе его запускаю. Если листов много и там много формул, то процедура ето не оч. быстрая.

Мне нужно записав авто макрос на одном листе бистро переделать его на запуск на только определенных листах,
qweewert
 
Так по какому принципу Вы их будете выбирать???
Как Excel'ю объяснить: на этом выполняй, а на этом не нужно???
Изменено: iba2004 - 27 Янв 2013 19:45:17
 
Цитата
iba2004 пишет: Так по какому принципу Вы их будете выбирать???
Название листа - ето и есть критерий вибора
qweewert
 
А чё выбирать/перебирать - макрос для всей книги, активный лист - на нем и выполняется, идет так, однако?.. ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
Страницы: 1 2 След.
Читают тему (гостей: 1)