VBA复制公式到其他工作表,不要移动"查看"

时间:2017-06-22 15:58:25

标签: excel-vba vba excel

我正在使用VBA例程进行复制

来源表:命名范围(多个'选择')

目标表:从命名范围中的单元格复制粘贴公式到与目标工作表上的单元格具有特定偏移量的单元格(此偏移取决于特定选择)。

我在源表上有两种类型的命名范围;一个我只想复制值(= rng_operationeel_input_data),我想从中复制一个公式(= rng_operationeel_formules)。应该相对地复制公式,以在目标表上引用(它们是来自其他范围的复制值的一部分)。出于这个原因,我不能使用" targetCell.Formula = sourceCell.Formula",因为它然后逐字复制绝对公式。不相对。 这就是我使用sourceCell的原因。

我在源范围内的所有单元格的每个循环中执行此操作,因为命名范围不是单个范围(范围集)。

请注意。 ' datasetReferenceCell'是目标工作表上的单元格,用于粘贴偏移量。

问题在于,即使我使用VBA进行复制粘贴,也不使用'选择'在某个地方,用户仍然在最后面对目标表。 (Excel将移至目标表) 这只发生在复制粘贴部分。

如何防止这种情况发生?

编辑:请注意我已经在使用" Application.ScreenUpdating" (从开始到假,到最后为真)。在例程结束时我也有一个MsgBox(对于例程成功的信息)。关闭MsgBox后,Excel将移动到目标工作表。

在VBA代码部分下面。

            ' dataset for weeknr found: save data to dataset
        Dim dataRange As Range, dataField As Range

        ' for each cell in input data range: save value in dataset
        Set dataRange = Range("rng_operationeel_input_data")
        For Each dataField In dataRange
            datasetReferenceCell.Offset(dataField.Row, dataField.Column).Value = dataField.Value
        Next dataField

        ' !!! Following are only saved, not loaded, as it are formula based fields

        ' for each cell in formula range: paste formula
        Set dataRange = Range("rng_operationeel_formules")

        For Each dataField In dataRange
            dataField.Copy
            datasetReferenceCell.Offset(dataField.Row, dataField.Column).PasteSpecial (xlPasteFormulas)
            'datasetReferenceCell.Offset(dataField.Row, dataField.Column).Formula = dataField.Formula 'not working, as relative formulas are required
        Next dataField

1 个答案:

答案 0 :(得分:0)

我能解决的唯一方法是重置活动表:

Public Sub routine()
    Dim activeWs As Worksheet
    Set activeWs = ThisWorkbook.ActiveSheet

    .. code including copy & PasteSpecial ...

    activeWs.Activate
End Sub