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

 

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

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

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

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

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

[vba]
Public Sub Тest5()On Error Resume NextApplication.ScreenUpdating = FalseApplication.Calculation = xlCalculationManualWith 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 WithApplication.CutCopyMode = FalseApplication.Calculation = xlCalculationAutomaticApplication.ScreenUpdating = ТrueSheets("data").SelectRange("F17").SelectEnd Sub
[/vba]

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

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
  • Страница 1 из 1
  • 1
Поиск:

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