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

Вход

Регистрация

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

 

= Мир MS Excel/Объединение нескольких процедур в одну - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объединение нескольких процедур в одну (Макросы/Sub)
Объединение нескольких процедур в одну
Dion Дата: Пятница, 16.10.2020, 17:25 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Добрый день!
Имеется рабочая процедура
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
' Изменение шрифта ...
    If Intersect(Target, Range("E4")) Is Nothing Then Exit Sub
    If Target = "" Then
        Target.Offset(16, 18).Font.Size = 18
        Target.Offset(16, 21).Font.Size = 28
    Else
        Target.Offset(16, 18).Font.Size = 14
        Target.Offset(16, 21).Font.Size = 24
    End If
End Sub
[/vba]
Подскажите, пожалуйста, как в неё добавить ещё несколько процедур? Если просто вставить, то код не работает.
[vba]
Код
    If Intersect(Target, Range("E5")) Is Nothing Then Exit Sub
    If Target = "" Then
        Target.Offset(18, 18).Font.Size = 18
        Target.Offset(18, 21).Font.Size = 28
    Else
        Target.Offset(18, 18).Font.Size = 14
        Target.Offset(18, 21).Font.Size = 24
    End If
[/vba]

[vba]
Код
    If Intersect(Target, Range("E6")) Is Nothing Then Exit Sub
    If Target = "" Then
        Target.Offset(21, 18).Font.Size = 18
        Target.Offset(21, 21).Font.Size = 28
    Else
        Target.Offset(21, 18).Font.Size = 14
        Target.Offset(21, 21).Font.Size = 24
    End If
[/vba]
 
Ответить
СообщениеДобрый день!
Имеется рабочая процедура
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
' Изменение шрифта ...
    If Intersect(Target, Range("E4")) Is Nothing Then Exit Sub
    If Target = "" Then
        Target.Offset(16, 18).Font.Size = 18
        Target.Offset(16, 21).Font.Size = 28
    Else
        Target.Offset(16, 18).Font.Size = 14
        Target.Offset(16, 21).Font.Size = 24
    End If
End Sub
[/vba]
Подскажите, пожалуйста, как в неё добавить ещё несколько процедур? Если просто вставить, то код не работает.
[vba]
Код
    If Intersect(Target, Range("E5")) Is Nothing Then Exit Sub
    If Target = "" Then
        Target.Offset(18, 18).Font.Size = 18
        Target.Offset(18, 21).Font.Size = 28
    Else
        Target.Offset(18, 18).Font.Size = 14
        Target.Offset(18, 21).Font.Size = 24
    End If
[/vba]

[vba]
Код
    If Intersect(Target, Range("E6")) Is Nothing Then Exit Sub
    If Target = "" Then
        Target.Offset(21, 18).Font.Size = 18
        Target.Offset(21, 21).Font.Size = 28
    Else
        Target.Offset(21, 18).Font.Size = 14
        Target.Offset(21, 21).Font.Size = 24
    End If
[/vba]

Автор - Dion
Дата добавления - 16.10.2020 в 17:25
Pelena Дата: Пятница, 16.10.2020, 18:53 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19167
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Ну, в предыдущей теме ведь был пример


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНу, в предыдущей теме ведь был пример

Автор - Pelena
Дата добавления - 16.10.2020 в 18:53
Dion Дата: Пятница, 16.10.2020, 19:39 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Pelena, тут немного другая ситуация. Проверяемые и редактируемые ячейки находятся в разных частях листа и простой проверкой одной ячейки и редактированием соседней не получается. Нужно именно сделать проверку каждой
ячейки E4, E5, E6 и отформатировать соответственно другие, разбросанные по листу
ячейки W20 и Z20, W23 и Z23, W26 и Z26

По отдельности коды работают, но когда я вставляю их в одну процедуру, то выполняется только первый код. Помогите, пожалуйста, объединить их (всего таких проверок у меня на листе 16 штук).
К сообщению приложен файл: Pelena.xls (54.0 Kb)


Сообщение отредактировал Dion - Пятница, 16.10.2020, 19:42
 
Ответить
СообщениеPelena, тут немного другая ситуация. Проверяемые и редактируемые ячейки находятся в разных частях листа и простой проверкой одной ячейки и редактированием соседней не получается. Нужно именно сделать проверку каждой
ячейки E4, E5, E6 и отформатировать соответственно другие, разбросанные по листу
ячейки W20 и Z20, W23 и Z23, W26 и Z26

По отдельности коды работают, но когда я вставляю их в одну процедуру, то выполняется только первый код. Помогите, пожалуйста, объединить их (всего таких проверок у меня на листе 16 штук).

Автор - Dion
Дата добавления - 16.10.2020 в 19:39
Pelena Дата: Пятница, 16.10.2020, 19:50 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19167
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Если делать проверку для каждой, то можно просто указывать адреса, а не смещение
К сообщению приложен файл: 5048844.xls (52.0 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЕсли делать проверку для каждой, то можно просто указывать адреса, а не смещение

Автор - Pelena
Дата добавления - 16.10.2020 в 19:50
Dion Дата: Пятница, 16.10.2020, 21:59 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Pelena, огромное спасибо, вы меня опять выручили. Надеюсь на этой неделе закончу с этой проклятой таблицей.
 
Ответить
СообщениеPelena, огромное спасибо, вы меня опять выручили. Надеюсь на этой неделе закончу с этой проклятой таблицей.

Автор - Dion
Дата добавления - 16.10.2020 в 21:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объединение нескольких процедур в одну (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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