Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Посетитель от 28 декабря 2020, 08:21

Название: Excel VBA Макросы. Копирование ячеек без "размножения" условного форматирования.
Отправлено: Посетитель от 28 декабря 2020, 08:21
На странице (листе) есть правила условного форматирования для диапазонов.
Внутри диапазона необходимо скопировать значение одной ячейки в другую. Использую следующий код:
ActiveSheet.Range(Cells(myTxt, 1), Cells(NextRow, 1)).Copy _
    ActiveSheet.Range(Cells(myTxt2, 1), Cells(NextRow2, 1))
При этом происходит добавление правила условного форматирования, а так как копирование происходит часто, то этих правил становится слишком много и это сильно тормозит работу файла.
Можно произвести копирование без "размножения" правил условного форматирования?
Название: Re: Excel VBA Макросы. Копирование ячеек без "размножения" условного форматирования.
Отправлено: Администратор от 28 декабря 2020, 08:49
Способ 1. Использование метода "PasteSpecial"

Используйте метод "PasteSpecial". Он позволяет копировать не все параметры, а заданные. Может быть какой-то из этих параметров вам подойдёт.

Данный код копирует только значения:
ActiveSheet.Range(Cells(myTxt, 1), Cells(NextRow, 1)).Copy
ActiveSheet.Range(Cells(myTxt2, 1), Cells(NextRow2, 1)).PasteSpecial xlPasteValues
Application.CutCopyMode = False

Все возможные значения вы можете посмотреть в программе "Excel". Для этого скопируйте любую ячейку, далее: вкладка "Главная" - группа "Буфер обмена" - стрелка кнопки "Вставить" - Специальная вставка... - появится диалог, в котором представлены все возможности вставки скопированного фрагмента.


Способ 2. Использование знака "равно"

Можно не использовать копирование / вставку, а можно использовать знак "равно".
В этом случае будут копироваться только значения.
Чтобы использовать знак "равно", в коде нужно указать фрагменты одного размера.

ActiveSheet.Range(Cells(myTxt2, 1), Cells(NextRow2, 1)).Value = _
    ActiveSheet.Range(Cells(myTxt, 1), Cells(NextRow, 1)).Value
Название: Re: Excel VBA Макросы. Копирование ячеек без "размножения" условного форматирования.
Отправлено: Посетитель от 28 декабря 2020, 09:55
спасибо, помогло, понравился способ 2