我正在使用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代码部分下面。
' 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发布于 2017-06-23 18:18:13
我能够解决这个问题的唯一方法是重置活动工作表:
Public Sub routine()
Dim activeWs As Worksheet
Set activeWs = ThisWorkbook.ActiveSheet
.. code including copy & PasteSpecial ...
activeWs.Activate
End Subhttps://stackoverflow.com/questions/44704330
复制相似问题