VBA将范围复制到下一个空单元格中的另一个范围
其中,VBA将范围复制到下一个空单元格中的另一个范围,vba,excel,Vba,Excel,其中,Rng1是要复制的数据范围,Destination当前是单元格引用(例如B2) 此代码将被多次调用。我如何修改它,使目标是同一列(例如B列),但行是下一个空单元格 例如,在第一次调用中,B2向前是值复制到的位置,然后在下一次调用中,第一次调用后的下一个空单元格是第二次调用应开始输出其值的位置。然后下一个空单元格开始第三次通话,依此类推 我可以将Destination变量更改为仅声明列字母,如果出现以下情况: Rng1.Copy Destination:=Worksheets("Refind
Rng1
是要复制的数据范围,Destination
当前是单元格引用(例如B2
)
此代码将被多次调用。我如何修改它,使目标是同一列(例如B列),但行是下一个空单元格
例如,在第一次调用中,B2向前是值复制到的位置,然后在下一次调用中,第一次调用后的下一个空单元格是第二次调用应开始输出其值的位置。然后下一个空单元格开始第三次通话,依此类推
我可以将Destination
变量更改为仅声明列字母,如果出现以下情况:
Rng1.Copy Destination:=Worksheets("RefindData").Range(Destination)
这条线对吗?你是说这样
Rng1.Copy Destination:=Worksheets("RefindData").Range(Destination & ???)
每次运行宏时,它都会粘贴到最后一行之后的下一个可用行。您的意思是这样吗
Rng1.Copy Destination:=Worksheets("RefindData").Range(Destination & ???)
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
每次运行宏时,它都会粘贴到最后一行之后的下一行。您也可以尝试下面的代码
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
假设:
- 活动单元格位于要粘贴结果的列中(要粘贴B列中的结果->从B列中选择单元格[例如B2]
- 第一行用标题填充,因此结果将从第二行粘贴
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
您也可以尝试下面的代码 假设:
- 活动单元格位于要粘贴结果的列中(要粘贴B列中的结果->从B列中选择单元格[例如B2]
- 第一行用标题填充,因此结果将从第二行粘贴
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
我建议您不要硬编码值。您可能希望看到这只是一个旧习惯,您可以使用允许的最大行数作为1048576,因为您没有抓住要点。使用硬编码值不是正确的做法:)
您能显示错误的部分吗?
如果您硬编码行。使用65536
或1048576
计数,则您将文件限制为特定的office版本。如果您使用1048576
则您的代码将在Excel 2003中出错。如果您在Excele 2007+中使用65536
,则您将无法获得正确的代码t最后一行,如果在65536
之外的任何单元格中有数据,则应避免使用硬编码值。您可以将65536
或1048576
替换为行。计数
:)请参阅我的代码示例,了解行的用法。Count
@Siddharth Rout小细节:)谢谢。我建议您不要硬编码这些值。您可能希望看到这只是一个旧习惯,您可以使用允许的最大行数作为1048576,因为您缺少这一点。使用硬编码值不是正确的做法:)是否可以显示错误的部分?
如果对行进行硬编码。使用65536
或1048576
进行计数,则将文件限制为特定的office版本。如果您使用1048576
,那么您的代码将在Excel 2003中显示错误。如果在Excle 2007+中使用65536
,则如果65536
之外的任何单元格中存在数据,则将无法获得正确的最后一行,因此应避免使用硬编码值。您可以将65536
或1048576
替换为行。Count
:)请参阅我的代码示例,了解行的用法。Count
@Siddharth Rout小细节:)感谢最后一行Rng1.Copy Destination:=wsRefind.Range(Destination&wsRefind.Range(Destination&wsRefind.Rows.Count).End(xlUp).Row+1)
将wsRefind细化为工作表
和设置wsRefind=wb.工作表(“RefindData”)
还显示目的地的值是多少?
?忽略没有正确注释掉的内容。现在可以了,谢谢!我将它与一点TecScript答案结合起来,方法是设置rng2
,然后使用rng1。复制目的地:=rng2
:)我得到最后一行的1004-应用程序定义或对象定义错误。复制目标:=wsRefind.Range(Destination&wsRefind.Range(Destination&wsRefind.Rows.Count)。End(xlUp.Row+1)
将wsRefind细化为工作表和设置wsRefind=wb.Worksheets(“RefindData”)
同时显示目的地的值是多少?忽略未正确注释的内容。现在可以了,谢谢!通过设置rng2
,然后使用rng1.Copy Destination:=rng2
,我将它与一点TecScript答案结合起来