2017-05-29 63 views
0
Rng1.Copy Destination:=Worksheets("RefindData").Range(Destination) 

哪里Rng1将被复制到的数据的范围和Destination当前单元格引用另一个范围(延续B2VBA复制范围中下一个空单元

该代码将被称为多次。我怎样才能改变这个,使目的地是同一列(例如列B),但行是下一个空单元格?

E.g所以在第一呼叫,B2起是其中的值被复制到,然后在下一呼叫的第一呼叫之后的下一空单元是其中第二呼叫应开始输出其值。然后是第三个呼叫开始的下一个空单元格,以此类推。

我可以改变Destination变量只是陈述列字母,如果是这样的:

Rng1.Copy Destination:=Worksheets("RefindData").Range(Destination & ???) 

沿着正确的台词是?

回答

1

你的意思是这样吗?

Sub Sample() 
    Dim rng1 As Range 
    Dim wsO As Worksheet 

    Set wsO = Worksheets("RefindData") 
    Set rng1 = Range("A1:A10") 

    rng1.Copy Destination:=wsO.Range("B" & _ 
            wsO.Range("B" & wsO.Rows.Count).End(xlUp).Row + 1) 
End Sub 

每次运行宏时,都会粘贴最后一行之后的下一个可用行。

+0

我得到'1004 - 申请中所定义或对象定义error'最后一行'Rng1.Copy目的地:= wsRefind.Range(目标&wsRefind.Range(目标&wsRefind.Rows.Count).END(xlUp)。行+ 1)'' – Aurelius

+0

昏暗wsRefined作为Worksheet'和'设置wsRefind = wb.Worksheets( “RefindData”)'也存在 – Aurelius

+1

什么是'Destination'的值? –

2
Sub CopyPasteCells() 
Dim Rng1 As Range, Rng2 As Range, ws As Worksheet 

Set ws = Worksheets("RefindData") 
Set Rng1 = ws.Range("C2:C10") 'Copy range as you like 
Set Rng2 = ws.Range("B" & ws.Rows.Count).End(xlUp).Offset(1, 0) 'Paste range starting from B2 and then first empty cell 

Rng1.Copy Destination:=Rng2 'Copy/Paste 
End Sub 
+0

'65536' O_O ???当你有1048576行时会发生什么? ;) –

+0

我会建议你不要硬编码值。您可能希望看到[这](https://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba/11169920#11169920) –

+0

这仅仅是一个老习惯,你可以使用允许的最大行数作为1048576 – Tehscript

2

您还可以尝试下面的代码。

假设:

  • 活动单元格是在柱中,其中要粘贴的结果(要粘贴在B列的结果 - 从乙柱>选择单元[例如B2],
  • 第一行填充有标题,所以结果会被从第二行粘贴

代码

Sub CutCopyPaste() 
    Dim lngCol As Long 
    Dim rngCopy As Range 

    Set rngCopy = Range("A1") 'The cell which ic copied 

    lngCol = Selection.Column 'active column where the results will be pasted 

    On Error Resume Next 
    rngCopy.Copy Cells(Cells(1, lngCol).End(xlDown).Row + 1, lngCol) 

    If Err.Number = 1004 Then 
     MsgBox "Be sure that active cell is in the column, where the results should be pasted!" & vbNewLine & vbNewLine & "Try again" 
     Err.Clear 
    End If 
End Sub 
相关问题