【发布时间】:2021-10-02 05:29:27
【问题描述】:
下面是从工作表“模板”复制范围并粘贴到活动工作表上的第一个空白行的代码的一部分。第 1 行是标题行。
我想要做的是引用刚刚粘贴的行,以便然后 Group 行。
我的 VBA 很差,我不确定如何正确设置“PastedRange”。我怎样才能做到这一点?
Dim copySheet As Worksheet
Dim pasteSheet As Worksheet
Dim LRow As Long
Dim PastedRange As Range
Set copySheet = ThisWorkbook.Worksheets("Template")
Set pasteSheet = ThisWorkbook.ActiveSheet
Set PastedRange = .Range("A" & .Rows.Count).End(xlUp).Row
With pasteSheet
'~~> Find the last cell to write to
If Application.WorksheetFunction.CountA(.Cells) = 0 Then
LRow = 2
Else
LRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1
End If
copySheet.Range("2:" & copySheet.Cells(Rows.Count, _
1).End(xlUp).Row).Copy
.Rows(LRow).PasteSpecial Paste:=xlPasteAll
PastedRange.Group
End With
【问题讨论】:
-
您从不使用
PastedRange和.Range("A" & .Rows.Count).End(xlUp).Row必须包含在With something和End With中。此外,您仅将值分配给LRow。你想粘贴什么?请提供您想要的样品和相应的结果 -
对不起,我对你所说的可以做和不能做有点困惑。我已经编辑了问题以包括正在复制的内容。期望的结果是将复制的范围粘贴到活动工作表的第一个空白行中,然后将刚刚粘贴的行进行分组。
-
没有理由感到困惑...
Set PastedRange = .Range("A" & .Rows.Count).End(xlUp).Row,在它存在的地方,会引发错误。从两个角度来看,它不能返回使用该构造 (.Range(...) 的任何内容:该行返回一行而不是一个范围,并且 .Range(...` 仅在With SomeSheet内有意义,然后是您的代码和End With. -
我在 End With 之前添加了
PastedRange = .Range("A" & .Rows.Count).End(xlUp)和PastedRange.Group。这是正确的方法吗?分组无效。 -
在不返回错误方面是正确的,但是您的代码应该计算最后粘贴的行,而不是最后一行。请测试我粘贴的代码并发送一些反馈。
标签: excel vba range copy-paste