首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA将公式复制到其他工作表,不移动“视图”

VBA将公式复制到其他工作表,不移动“视图”
EN

Stack Overflow用户
提问于 2017-06-22 23:58:25
回答 1查看 712关注 0票数 0

我正在使用VBA例程复制

源表:命名范围(多个‘选择’)

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

我在源工作表上有两种类型的命名区域;一种我只想从其中复制值(=rng_operationeel_input_data),另一种我想从其中复制到公式(=rng_operationeel_formules)。公式应该被“相对”复制,以便在目标工作表上有引用(这是从其他范围复制的值的一部分)。因此,我不能使用"targetCell.Formula = sourceCell.Formula",因为它会直接复制绝对公式。不是相对的。这就是我使用sourceCell的原因。

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

请注意。'datasetReferenceCell‘是目标工作表上的单元格,从该单元格获取粘贴的偏移量。

问题是,即使我使用VBA进行复制粘贴,而没有在某处使用'select‘,最终用户仍然会面对目标工作表。(Excel将移动到目标工作表)这种情况仅发生在复制-粘贴部件中。

我如何才能防止这种情况发生?

编辑:请注意,我已经使用了"Application.ScreenUpdating“(从开始到false,在结束时到true)。我在例程的末尾也有一个MsgBox (表示例程成功)。MsgBox关闭后,Excel将移动到目标工作表。

在VBA代码部分下面。

代码语言:javascript
运行
复制
            ' 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
EN

回答 1

Stack Overflow用户

发布于 2017-06-23 18:18:13

我能够解决这个问题的唯一方法是重置活动工作表:

代码语言:javascript
运行
复制
Public Sub routine()
    Dim activeWs As Worksheet
    Set activeWs = ThisWorkbook.ActiveSheet

    .. code including copy & PasteSpecial ...

    activeWs.Activate
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44704330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档