首页 文章

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

提问于
浏览
0

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

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

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

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

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

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

问题是,即使我使用VBA进行复制粘贴,而不在某处使用“选择”,最后用户仍然面对目标表 . (Excel将移动到目标工作表)这只发生在复制粘贴部分 .

我怎样才能防止这种情况发生?

编辑:请注意我已经在使用“Application.ScreenUpdating”(开头为false,结尾为true) . 在例程结束时我也有一个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

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

    Public Sub routine()
        Dim activeWs As Worksheet
        Set activeWs = ThisWorkbook.ActiveSheet
    
        .. code including copy & PasteSpecial ...
    
        activeWs.Activate
    End Sub
    

相关问题