[英]Copying cells with Range.Copy
我正在编写一个 Excel 工作簿来获取用于研究的数据,分析每天的价值,然后将输入的数据及其 7 个汇总计算发送到工作簿(名为测试主题 1,工作表测试 med 1)中进行存档和分析。
range.copy
命令正确复制直接(或由用户表单)输入的数据范围和具有描述性标题的单元格。
包含从工作簿中另一个工作表引用的数据的列P
使用错误的单元格引用进行复制。 单元格AB16
与来自='[FAVor Study Medication Daily Calculator8.xlsm]Calculations'!AB7
的数据一起复制,(不是...AB16
)。 对于该列 ( AB16
- AB22
) 中的所有 7 个汇总单元格都是如此,但单元格ab15
和ab23
(对同一工作表上其他单元格的简单引用)被正确复制。
我尝试使用 PasteSpecial 命令,但遇到了另一组问题,接下来我将尝试解决这些问题!
我已将问题代码行标记为 ProblemLine:
Dim wsCopyfrom As Worksheet
Dim wsCopyto As Worksheet
'Dim CopyfromLastRow As Long
'Dim CopytoLastRow As Long
'set variables for copy and dest sheets
Set wsCopyfrom = ThisWorkbook.Sheets("EnterData")
Set wsCopyto = ActiveWorkbook.Sheets(medname)
'Find last used row in the copyfrom based on data in column E and the copyto Col A
CopyfromLastRow = wsCopyfrom.Range("E200").End(xlUp).Row
CopytoLastRow = wsCopyto.Range("A200").End(xlUp).Row
'make copy of range, but ensure that all of the block rows are included, to row 10
If CopyfromLastRow > 19 Then
wsCopyfrom.Range("A7:P" & CopyfromLastRow).Copy wsCopyto.Range("A" & CopytoLastRow + 1)
Else
'ProblemLine
wsCopyfrom.Range("A7:q20").Copy wsCopyto.Range("A" & CopytoLastRow + 1)
End If 'if to copy at least to row 19
这是预期的“相对参考”行为。 如果您自己在 Excel 中手动复制这些范围,也会发生同样的事情。
解决这个问题的两种选择:
='[FAVor Study Medication Daily Calculator8.xlsm]Calculations'!$AB$16
更改您的代码以不使用Copy
,例如
wsCopyto.Range("A" & CopytoLastRow + 1).Formula = wsCopyfrom.Range("A7:Q20").Formula
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.