选择自动填充到其他工作表

时间:2018-03-08 07:05:23

标签: excel vba excel-vba

以下代码在我的工作表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的链接表。

1 个答案:

答案 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

我更喜欢后者,更快,没有剪贴板使用