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

Вход

Регистрация

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

 

= Мир MS Excel/как заставить макрос выполняться только на заданном листе - Мир MS Excel

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

Excel 2019
Доброго времени суток, уважаемые форумчане! Не судите строго, пытаюсь писать макросы по аналогии с тем что в инете нахожу. Накидал небольшой код, все работает по замыслу: в рабочие строки копируются заготовки, далее замена значениями из ячеек, очистка формата и превращение в формулу, затем формула раскатывается на заданное количество ячеек и возвращаемся на рабочий лист в какую то парковочную ячейку. Вот только есть проблема, несмотря на то, что явно указан лист, в котором должны происходить операции, если нахожусь на другом листе, то копирование происходит в активный лист. Не могу понять в чем ошибка, подскажите пожалуйста. И если в коде что то криво/некорректно написано, поправьте, пожалуйста, это, можно сказать, моя первая самостоятельная работа, занявшая огромное количество времени и уже сил нет искать кривизну, знаний не хватает. Небольшое уточнение, хотелось бы не использовать .Select.

[vba]
Код
Public Sub Test5()

On Error Resume Next
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

With Sheets("service")
        .Range("Q9:DH9").Copy Range("Q11:DH12")
        .Range("Y10").Copy .Range("AA11")
        .Range("AU10").Copy .Range("AW11")
        .Range("BT10").Copy .Range("BV11")
        .Range("CQ10").Copy .Range("CT11")
       
        s = Worksheets("data").Range("C32")
        .Range("Q11:DH12").Replace What:="(k)", Replacement:=[S4], LookAt:=xlPart
        .Range("Q11:DH12").Replace What:="(s)", Replacement:=s, LookAt:=xlPart
        .Range("Q11:DH12").ClearFormats
        .Range("Q11:DH12").FormulaLocal = Range("Q11:DH12").FormulaLocal

        .Cells(12, 17).Resize(1, 96).Copy Cells([Position], 17).Resize([SyncIns], 96)

End With

Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Sheets("data").Select
Range("F17").Select
End Sub

[/vba]
 
Ответить
СообщениеДоброго времени суток, уважаемые форумчане! Не судите строго, пытаюсь писать макросы по аналогии с тем что в инете нахожу. Накидал небольшой код, все работает по замыслу: в рабочие строки копируются заготовки, далее замена значениями из ячеек, очистка формата и превращение в формулу, затем формула раскатывается на заданное количество ячеек и возвращаемся на рабочий лист в какую то парковочную ячейку. Вот только есть проблема, несмотря на то, что явно указан лист, в котором должны происходить операции, если нахожусь на другом листе, то копирование происходит в активный лист. Не могу понять в чем ошибка, подскажите пожалуйста. И если в коде что то криво/некорректно написано, поправьте, пожалуйста, это, можно сказать, моя первая самостоятельная работа, занявшая огромное количество времени и уже сил нет искать кривизну, знаний не хватает. Небольшое уточнение, хотелось бы не использовать .Select.

[vba]
Код
Public Sub Test5()

On Error Resume Next
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

With Sheets("service")
        .Range("Q9:DH9").Copy Range("Q11:DH12")
        .Range("Y10").Copy .Range("AA11")
        .Range("AU10").Copy .Range("AW11")
        .Range("BT10").Copy .Range("BV11")
        .Range("CQ10").Copy .Range("CT11")
       
        s = Worksheets("data").Range("C32")
        .Range("Q11:DH12").Replace What:="(k)", Replacement:=[S4], LookAt:=xlPart
        .Range("Q11:DH12").Replace What:="(s)", Replacement:=s, LookAt:=xlPart
        .Range("Q11:DH12").ClearFormats
        .Range("Q11:DH12").FormulaLocal = Range("Q11:DH12").FormulaLocal

        .Cells(12, 17).Resize(1, 96).Copy Cells([Position], 17).Resize([SyncIns], 96)

End With

Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Sheets("data").Select
Range("F17").Select
End Sub

[/vba]

Автор - Markovich
Дата добавления - 30.01.2021 в 17:36
Pelena Дата: Суббота, 30.01.2021, 17:44 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
В двух местах нет точек перед Range и ещё перед Cells


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

Автор - Pelena
Дата добавления - 30.01.2021 в 17:44
Markovich Дата: Суббота, 30.01.2021, 19:08 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Pelena, спасибо большое, не первый раз выручаете! Поправил, работает правильно.
 
Ответить
СообщениеPelena, спасибо большое, не первый раз выручаете! Поправил, работает правильно.

Автор - Markovich
Дата добавления - 30.01.2021 в 19:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » как заставить макрос выполняться только на заданном листе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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