我有点困惑。我创建了一个带有宏的按钮,该宏可复制s
实际工作表中的另一工作表中的单元格选择s0
(s
和s0
均为字符串变量)
Sheets(s0).Range("D56:K80").Value = Sheets(s).Range("L2:S26").Value
和所有作品。但是如果我尝试写一些更灵活的东西,例如可以改变起始行的范围
x = Cells(2, 4).Value 'x is a number defined by user
Sheets(s0).Range(Cells(56, 4), Cells(80, 11)).Value = Sheets(s).Range(Cells(2 + x, 2), Cells(26 + x, 9)).Value
没有任何效果并出现 1004 错误。问题是什么?我究竟做错了什么?
如果我从 Cells 命令计算总和,情况不会改变。但像
Sheets(s).Cells(r, c) = x
当我使用 r 和 c 的变量值更改单个单元格的值时有效。(x、r 和 c 总是整数)
先感谢您
您必须限定直到工作表对象的所有范围引用:
Sheets(s0).Range(Sheets(s0).Cells(56, 4), Sheets(s0).Cells(80, 11)).Value = Sheets(s).Range(Sheets(s).Cells(2 + x, 2), Sheets(s).Cells(26 + x, 9)).Value
With-End With
语法的使用可以稍微减轻打字负担
With Sheets(s)
Sheets(s0).Range(Sheets(s0).Cells(56, 4), Sheets(s0).Cells(80, 11)).Value = .Range(.Cells(2 + x, 2), .Cells(26 + x, 9)).Value
End With
而如果您确定在宏运行时“s0”是活动工作表(即所有不合格工作表默认引用的工作表),那么您可以省略其限定:
With Sheets(s)
Range(Cells(56, 4), Cells(80, 11)).Value = .Range(.Cells(2 + x, 2), .Cells(26 + x, 9)).Value
End With
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句