【发布时间】:2017-06-22 15:58:25
【问题描述】:
我正在使用 VBA 例程进行复制
源表:命名范围(多个“选择”)
目标工作表:从命名范围内的单元格复制粘贴公式,到与目标工作表上的单元格有一定偏移量的单元格(此偏移量取决于特定选择)。
我在源表上有两种类型的命名范围;一个我只想复制值(=rng_operationeel_input_data),一个我想复制到公式(=rng_operationeel_formules)。应“相对”复制公式,以便在目标工作表上有引用(这是从其他范围复制的值的一部分)。出于这个原因,我不能使用“targetCell.Formula = sourceCell.Formula”,因为它会从字面上复制绝对公式。不是相对的。 这就是我使用 sourceCell 的原因。
我在源范围内所有单元格的 for each 循环中执行此操作,因为命名范围不是一个单一范围(范围集)。
注意。 '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
【问题讨论】:
-
不知道是不是看懂了,不过可以直接复制不用select
Range("rng_operationeel_input_data").Copy Destination:=Range("rng_operationeel_formules")msdn.microsoft.com/VBA/Excel-VBA/articles/… -
我只想复制公式(因此是'xlPasteSpecial'),但要以相对复制单元格的方式。如果我使用你的方法,我也会得到所有其他的东西(比如标记、安全等)。如果我使用“targetCell.Formula = sourceCell.Formula”,我会得到带有绝对单元格引用的公式。