以下代码在我的工作表1中运行正常。但我想将数据从一个工作表传输到另一个工作表。
Sub Data_Transfer()
Dim rowcount As Integer
Sheets("Eingabe").Select ' Whatever your sheet is
rowcount = 4
rowcount = Application.CountA(Range("A:A")) + 1 'get end range
ActiveSheet.Unprotect 123
Cells(5, 2).Select 'select the start cell
'autofill to rowcount
Selection.AutoFill Destination:=Range("B5:B" & rowcount), Type:=xlFillDefault
ActiveSheet.Protect 123
End Sub
目的地的语法如何?我试过了:
Set fillRange = Worksheets("MDB_to_pA_Dispodaten").Range("B5:B" & rowcount)
Selection.AutoFill Destination:=fillRange, Type:=xlFillDefault
但它不起作用......
编辑: - >无法执行Range对象的AutoFill方法。 错误1004
编辑2: 我需要的是:
Sub Daten_Transfer()
Range("A5").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A5:X33").Select
Selection.Copy
Sheets("MDB_to_pA_Dispodaten").Select
Range("A2").Select
ActiveSheet.Paste
Range("A2").Select
End Sub
但我动态地需要它!因为用户在第一张纸上有33行,第二天他有10行。我只想将填充的行从Sheet 1传输到Sheet 2,因为Sheet 2是MS Access的链接表。
答案 0 :(得分:2)
Edited
添加粘贴值功能
我想你需要像
这样的东西Sub Daten_Transfer()
Range("A5:X" & Cells(Rows.Count, "A").End(xlUp).Row).Copy Destination:=Sheets("MDB_to_pA_Dispodaten").Range("A2")
End Sub
如果您只想粘贴值,您有两种方法:
1)使用PasteSpecial
对象
Range
方法
Sub Daten_TransferValuesOnly1()
Range("A5:X" & Cells(Rows.Count, "A").End(xlUp).Row).Copy
Sheets("MDB_to_pA_Dispodaten").Range("A2").PasteSpecial xlPasteValues
Application.CutCopyMode = False 'clear clipboard
End Sub
2)使用Value
属性
Sub Daten_TransferValuseOnly2()
With Range("A5:X" & Cells(Rows.Count, "A").End(xlUp).Row) ' reference "source" range
Sheets("MDB_to_pA_Dispodaten").Range("A2").Resize(.Rows.Count, .Columns.Count).value = .value ' write referenced range values in "target" sheet range of same size and starting from A2
End With
Application.CutCopyMode = False
End Sub
我更喜欢后者,更快,没有剪贴板使用