下面的代码试图将所选范围(传递为rng)粘贴到工作表的末尾.如果已经存在2行(A1,A2),则它可以工作.
Sub copyRow(rng As Range, ws As Worksheet)
Dim newRange As Range
Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)
rng.Copy
newRange.PasteSpecial (xlPasteAll)
End Sub
Run Code Online (Sandbox Code Playgroud)
因此,如果存在A1和A2,并且如果您将此方法调用100次,则会在它们之后插入100行.但是,如果没有行或只有A1,它只会覆盖A2.我可以在同一行看到excel写(覆盖)
看来,如果xlDown如何计算,如果少于2行,则不确定.
任何帮助,将不胜感激.
Ton*_*ore 35
对不起,我不同意迈克尔的回答.
End(xlDown)是VBA相当于点击Ctrl+ Down.
尝试Ctrl+ Down用
这将让您了解所有不同的行,Ctrl+ Down可能会带您到.
Set newRange = ws.Range("A1").End(xlDown).End(xlDown).End(xlUp).Offset(1, 0) 并不一定会将您带到最后使用的行加1.
我很惊讶Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)使用空柱.Range("A1").End(xlDown)会把你带到工作表的最下面一行,然后.Offset(1, 0)会试着把你带走.
考虑:
Dim RowLast As Long
RowLast = ws.Cells(Rows.Count, "A").End(xlUp).Row
Run Code Online (Sandbox Code Playgroud)
我假设你没有borrom行中的值.如果您不关心第1行是否留空并且空列,则:
RowLast = ws.Cells(Rows.Count, "A").End(xlUp).Row
Set NewRange = ws.Cells(RowLast + 1, "A")
Run Code Online (Sandbox Code Playgroud)
无论纸张的当前内容如何,都应该给出所需的结果.
如果您确实将第1行留空,请尝试使用Ctrl+ Down和Ctrl+ Up来了解不同值组合的效果.
| 归档时间: |
|
| 查看次数: |
239286 次 |
| 最近记录: |