我遇到了一些问题,因为我是VBA的新手,但我确信它有一个非常简单的解决方案。
我基本上想要自动将新数据添加到工作表中。
Sheet:INB BASKET Cells:A2:I76包含指向另一个工作表的实时链接。 基本上我想将这些值作为值复制到Sheet IND TOTAL下面按下按钮上的最新条目(不是不断更新)。
我在excel中创建了一个动态命名区域(PasteRange),它选择了我要粘贴到的最后一个条目下面的75行:
=OFFSET('IND TOTAL'!$A$1,COUNTA('IND TOTAL'!$A:$A),0,75,9)
然后我创建了一个包含以下内容的模块:
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
但到目前为止还没有成功,请指教。
答案 0 :(得分:6)
如果您只对粘贴值感兴趣,那么直接值传输效率更高,并且不涉及剪贴板。
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,您只需在目标的左上角指定单元格,并允许复制的区域定义大小和形状。
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包含数字,则交换1e99用于" zzz"。