Macro que cola enquanto mantém as fórmulas intactas

0

Existe alguma maneira de eu ter minha macro copiar e colar dados de outra planilha em uma planilha mestre, mantendo as fórmulas na planilha mestre? Então, basicamente, eu quero que minha macro cole o texto apenas enquanto mantém a formatação e as fórmulas da planilha principal. Também quero excluir os dados que estou copiando da minha planilha diária depois de colá-los no mestre. Aqui está minha macro até agora

Sub macro ()

Workbooks.Open Filename:= _
        ("I:\Master Copy.xlsm"), Password:="nm"

Dim lNewRow As Long
Dim lDataRow As Long

Windows("Master Copy").Activate
ActiveSheet.Unprotect Password = "nm"
    Windows("Daily Worksheet").Activate
    '1. Find last used row in both sheets
    lNewRow = Workbooks("Daily Worksheet").Worksheets("Sheet1").Cells(Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row
  Windows("Master Copy").Activate
    lDataRow = Workbooks("Master Copy").Worksheets("Submission Log").Cells(Worksheets("Submission Log").Rows.Count, 1).End(xlUp).Row
    lDataRow = lDataRow + 1
    '2. Copy data
    Workbooks("Daily Worksheet").Worksheets("Sheet1").Range("A2:R" & lNewRow).Copy
    '3. Paste data
    Worksheets("Submission Log").Range("A" & lDataRow).PasteSpecial

    Application.CutCopyMode = False
    Selection.ClearContents

  Windows("Master Copy").Activate

ActiveSheet.Protect Password = "nm"


End Sub
    
por Josh W 25.10.2017 / 22:55

1 resposta

0

Você não pode fazer o que está pedindo com uma única linha de código.

Suponho que o que está em cada coluna é amplamente compatível entre suas duas folhas (caso contrário, você não estaria tentando copiar todo o intervalo de uma folha para outra).

Aqui está uma maneira de fazer isso:

  1. Copie todo o intervalo para a planilha de destino como você está atualmente, mas cole apenas o texto. Isso manterá a formatação da planilha de destino, mas substituirá as fórmulas que você deseja manter.
  2. Na planilha de destino, copie as fórmulas que deseja manter da linha acima para a linha recém-colada. O Excel atualizará automaticamente quaisquer referências relativas nas fórmulas. Você terá que fazer isso para cada grupo contíguo de células que contêm fórmulas.

Há certamente outras maneiras de fazer isso, mas todas elas exigirão que seu código VBA "saiba" as referências (ou como encontrá-las) das células que precisam ser tratadas de forma diferente. Não há recurso embutido que executa os vários tipos de cópia distintos que você precisa para um único intervalo em uma única operação. Nós temos o VBA por causa de coisas assim!

Quanto à exclusão dos dados da planilha de origem, suponho que você esteja procurando o método .ClearContents .

    
por 26.10.2017 / 05:04