在VBAmacros中复制一个variables范围
我有点困惑。 我创build了一个macros的button,从我的实际工作表s0
另一个工作表中复制单元格的select( s
和s0
都是stringvariables)
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错误。 问题是什么? 我究竟做错了什么?
如果我计算单元格命令的总和,情况不会改变。 但是像
Sheets(s).Cells(r, c) = x
当我改变variables值为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