gpt4 book ai didi

excel - VBA 将范围复制到最后一行并粘贴到新工作表上,单元格 A19 之后的第一个空行

转载 作者:行者123 更新时间:2023-12-04 01:06:14 27 4
gpt4 key购买 nike

我正在尝试将范围 A6:L 复制到工作表“第 1 步”的最后一行。然后粘贴到工作表“Vendor_Copy”上,但粘贴在 A19 之后的第一个空行上。

这是我所拥有的,除了粘贴在正确的位置之外,它可以做任何事情。它从 A1 开始粘贴,这是一个空白单元格。但是,即使我用数字 1 填充 1 - 19 的所有行,它仍会粘贴到工作表“Vendor_Copy”的 A1 中。

感谢您的帮助!

Dim sht1 As Worksheet
Dim sht2 As Worksheet
Dim lr As Long

Set sht1 = Worksheets("Step 1")
Set sht2 = Worksheets("Vendor_Copy")

lr = sht2.Range("A19").End(xlDown).Row

sht1.Activate
Range("A6").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy

sht2.Activate
Cells(lastrow + 1, 1).PasteSpecial

最佳答案

不要使用Selection 对象。它意味着作为屏幕和 VBA 之间的接口(interface)。相反,请使用 Range 对象,它可以让您直接对工作表进行寻址。

Sheet2 上您要处理的行是下一个空闲行,但不小于 19。在 Excel 术语中,这是 MAX() 函数的结果,并包含在下面的代码中。

Dim Sht1    As Worksheet
Dim Sht2 As Worksheet
Dim Rng As Range
Dim Cl As Long ' Column: last used
Dim Rt As Long ' Row: target

Set Sht1 = Worksheets("Step 1")
Set Sht2 = Worksheets("Vendor_Copy")

With Sht1
Cl = .Cells(6, .Columns.Count).End(xlToLeft).Column
Set Rng = .Range(.Cells(6, "A"), .Cells(.Rows.Count, "A").End(xlUp)).Resize(, Cl)
End With

With Sht2
' Columns(1) = Columns("A")
Rt = WorksheetFunction.Max(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 19)
Rng.Copy Destination:=.Cells(Rt, 1)
End With

注意 Cells(6, 1).End(xlDown).Row - 或 Range("A6").End(xlDown).Row 会给你A6 下面最后使用的单元格的地址,后跟一个空格。 Cells(Rows.Count, 1).End(xlUp).Row 将为您提供从工作表底部看的 A 列中第一个使用的单元格 (Rows.Count)。不同之处在于,从上往下看下一个空白可能不是列中最后使用的单元格。 Cells(6, 1).End(xlToRight).ColumnCells(6, Columns.Count).End(xlToLeft).Column 之间的区别相同。从左到右查看最后使用的列。从右向左看,您会找到第一个空白。

关于excel - VBA 将范围复制到最后一行并粘贴到新工作表上,单元格 A19 之后的第一个空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66345028/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com