Excel VBA将静态范围复制到不同的工作表上的dynamic范围

我有几个问题,因为我是VBA新手,但我确定它有一个非常简单的解决scheme。

我基本上想自动添加新的数据到工作表。

工作表:INB BASKET单元格:A2:I76包含到另一个工作表的实时链接。 基本上我想复制这些值作为表单IND总数低于button按下(不连续更新)的最新条目。

我在Excel中创build了一个dynamic的命名范围(PasteRange),它select我要粘贴的最后一个条目下面的75行:

=OFFSET('IND TOTAL'!$A$1,COUNTA('IND TOTAL'!$A:$A),0,75,9) 

然后我创build了一个模块,内容如下:

 Sub CopyRange() Dim CopyFrom As Range Set CopyFrom = Sheets("IND BASKET").Range("A2", [I76]) et PasteArea = Sheets("IND TOTAL").Range("PasteRange") CopyFrom.Copy PasteArea.PasteSpecial xlPasteValues End Sub 

但是,到目前为止还没有成功,请告知。

如果你只关心粘贴值,那么直接的价值转移更有效率,不涉及剪贴板。

 with Sheets("IND BASKET").Range("A2:I76") Sheets("IND TOTAL").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value end with 

使用自己的复制,粘贴特殊xlPasteValues,只需要在目标的左上angular指定单元格,并允许复制区域定义大小和形状。

 Sheets("IND BASKET").Range("A2:I76").Copy Sheets("IND TOTAL").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 

你的命名范围的定义可能会更好,没有易失性的OFFSET函数,

 =INDEX('IND TOTAL'!$A:$A, MATCH("zzz",'IND TOTAL'!$A:$A )+1):INDEX('IND TOTAL'!$I:$I, MATCH("zzz",'IND TOTAL'!$A:$A ) + 75) 'or for just the first cell =INDEX('IND TOTAL'!$A:$A, MATCH("zzz",'IND TOTAL'!$A:$A )+1) 

假定列A包含我使用COUNTA而不是COUNT推断的文本。 如果列A包含数字,请将1e99replace为“zzz”。