Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запуск макроса на двух листах при изменении ячейки на одном - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса на двух листах при изменении ячейки на одном (Макросы/Sub)
Запуск макроса на двух листах при изменении ячейки на одном
ttv Дата: Четверг, 26.10.2017, 10:16 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!
В файле 2 листа. На первом в ячейку F22 вручную вносится значение. Надо чтобы макрос это значение встраивал в текст колонтитула, но не только на первом листе, но и на втором.
Сам макрос "колонтитул" работает, автоматический запуск на 1 листе могу сделать, через код [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("F22"), Target) Is Nothing Then
        Call колонтитул
    End If
End Sub
[/vba]
а как переписать этот код так, чтобы и на втором листе макрос выполнялся автоматически? В модуль книги его ложу, но он не выполняется при изменении ячейки.
К сообщению приложен файл: 002.xls(64Kb)


Сообщение отредактировал ttv - Четверг, 26.10.2017, 10:21
 
Ответить
СообщениеЗдравствуйте!
В файле 2 листа. На первом в ячейку F22 вручную вносится значение. Надо чтобы макрос это значение встраивал в текст колонтитула, но не только на первом листе, но и на втором.
Сам макрос "колонтитул" работает, автоматический запуск на 1 листе могу сделать, через код [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("F22"), Target) Is Nothing Then
        Call колонтитул
    End If
End Sub
[/vba]
а как переписать этот код так, чтобы и на втором листе макрос выполнялся автоматически? В модуль книги его ложу, но он не выполняется при изменении ячейки.

Автор - ttv
Дата добавления - 26.10.2017 в 10:16
sboy Дата: Четверг, 26.10.2017, 11:06 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1103
Репутация: 276 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Добавить в макрос колонтитул ссылку на лист
[vba]
Код
Sub колонтитул(ByRef sh As Worksheet)
With sh.PageSetup
        .CenterHeader = "Протокол испытаний №" & [Лист1!F22]
        End With
End Sub
[/vba]
а макрос можно так переписать (если листов больше, то лучше циклом сделать)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("F22"), Target) Is Nothing Then
        Call колонтитул(ActiveSheet)
        Call колонтитул(Sheets("Лист2"))
    End If
End Sub
[/vba]
К сообщению приложен файл: 3391948.xls(69Kb)
 
Ответить
СообщениеДобрый день.
Добавить в макрос колонтитул ссылку на лист
[vba]
Код
Sub колонтитул(ByRef sh As Worksheet)
With sh.PageSetup
        .CenterHeader = "Протокол испытаний №" & [Лист1!F22]
        End With
End Sub
[/vba]
а макрос можно так переписать (если листов больше, то лучше циклом сделать)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("F22"), Target) Is Nothing Then
        Call колонтитул(ActiveSheet)
        Call колонтитул(Sheets("Лист2"))
    End If
End Sub
[/vba]

Автор - sboy
Дата добавления - 26.10.2017 в 11:06
ttv Дата: Четверг, 26.10.2017, 12:11 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
sboy, спасибо огромное! все работает!
А почему лучше циклом? Если будет 4-5 листов?
 
Ответить
Сообщениеsboy, спасибо огромное! все работает!
А почему лучше циклом? Если будет 4-5 листов?

Автор - ttv
Дата добавления - 26.10.2017 в 12:11
buchlotnik Дата: Четверг, 26.10.2017, 12:55 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3325
Репутация: 886 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Цитата
почему лучше циклом
потому что придётся много раз писать Call а так можно по листам по их индексам пройтись: [vba]
Код
For i = 1 To Worksheets.Count
    Call колонтитул(Worksheets(i))
Next i
[/vba]


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru
 
Ответить
Сообщение
Цитата
почему лучше циклом
потому что придётся много раз писать Call а так можно по листам по их индексам пройтись: [vba]
Код
For i = 1 To Worksheets.Count
    Call колонтитул(Worksheets(i))
Next i
[/vba]

Автор - buchlotnik
Дата добавления - 26.10.2017 в 12:55
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса на двух листах при изменении ячейки на одном (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!