vba excel как вставить значения без форматирования шрифта / цвета / bg color

StackOverflow https://stackoverflow.com/questions/1610141

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть макрос для копирования сводной строки из каждой серии листов.Итоговая строка специально отформатирована шрифтом / цветом шрифта / цветом bg, но при вставке в "таблицу суммирования" в нее нужно просто вставлять значения без форматирования.

For LoopIndex = StartIndex To EndIndex
    ' start in a task sheet
    Sheets(LoopIndex).Select
    CopiedCells = ActiveSheet.Range("A156:L156").Copy

    ' now move to Summary sheet
    Sheets("Summary Sheet").Select
    ActiveSheet.Range("A8").Select
    ActiveCell.EntireRow.Insert

    ActiveCell.PasteSpecial Paste:=xlPasteValues
    ' tried variations of: ActiveCell.PasteSpecial paste:=xlValues, operation:=xlPasteSpecialOperationNone

    Application.CutCopyMode = False ' clears clipboard
Next LoopIndex

Все исследования, которые я провел, говорят, что PastSpecial, xlValues, xlPasteValues должны работать, но ничто не изменяет форматирование, не знаю, что я здесь делаю не так.Он вставляет значения, а не ссылочные значения, так что это хорошо.У меня есть макрос для сброса форматирования в цикле, но я хотел бы сделать его более эффективным.Я использую Excel 2007.

Это было полезно?

Решение

Это действительно странно!

Причина в том, что вы копируете, Вставляете, а затем вставляете.Попробуйте Вставить, Скопировать, а затем Вставить:

'we must commence on the Summary Sheet
Sheets("Summary Sheet").Select
For LoopIndex = StartIndex To EndIndex

    ' insert the row before we start
    ActiveSheet.Range("A8").Select
    ActiveCell.EntireRow.Insert

    ' select the task sheet
    Sheets(LoopIndex).Select
    CopiedCells = ActiveSheet.Range("A156:L156").Copy

    ' now move to Summary sheet
    Sheets("Summary Sheet").Select

    ActiveCell.PasteSpecial Paste:=xlPasteValues
    ' tried variations of: ActiveCell.PasteSpecial paste:=xlValues, operation:=xlPasteSpecialOperationNone

    Application.CutCopyMode = False ' clears clipboard
Next LoopIndex

Как бы то ни было, у меня были проблемы с использованием copy & paste.Это означает, что пока ваш макрос запущен, вы больше ничего не можете сделать.

Поскольку это фиксированный диапазон, я бы предложил следующее:

For LoopIndex = StartIndex To EndIndex
    Sheets("Summary Sheet").Range("A8").EntireRow.Insert
    For i = 1 To 12
        Sheets("Summary Sheet").Cells(8, i) = Sheets(LoopIndex).Cells(156, i)
    Next
Next

Другие советы

ActiveSheet.Range("A1").EntireRow.Copy
ActiveSheet.Range("A2").EntireRow.PasteSpecial xlPasteValues
Application.CutCopyMode = False

или

ActiveSheet.Range("A2").EntireRow.Value = ActiveSheet.Range("A1").EntireRow.Value

Замените A1 на ваш источник, а A2 - на вашу цель.

Как только я выбрал диапазон, я поместил это

 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone 

У меня отлично работает :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top