我一直试图将一个Excel工作表中的命名范围复制到另一工作表中的命名范围
Sub Update()
'update availability and utilisation to SMU Tracking sheet
Application.ScreenUpdating = False
Dim ws1 As Worksheet:
Set ws1 = Worksheets("Delays_a") 'source
Dim ws2 As Worksheet:
Set ws2 = Worksheets("SMU Tracking") 'destination
'copy
ws1.Range("Productivity").Copy
ws2.Range("ProductivitySMU").Select
ws2.Range("ProductivitySMU").Paste
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
任何帮助表示赞赏。
更新:
我也尝试过这段代码
Sub CommandButton2_Click()
'update availability and utilisatioon to SMU Tracking sheet
Dim ws1 As Worksheet:
Set ws1 = Worksheets("Delays_a") 'source
Dim ws2 As Worksheet:
Set ws2 = Worksheets("SMU Tracking") 'destination
'copy
ws1.Range("Productivity").Copy 'cells to copy
lrow = 1500000
For i = 5 To lrow
If Cells(i, 7) = "" Then 'If cell is empty then paste new value
ws2.Range("ProductivitySMU").PasteSpecial xlPasteValues
End If
Next i
End Sub
问题是这些值将粘贴到Range(“ ProductivitySMU”)中的所有空单元格中。
请尝试此代码。它将新数据附加到目标范围的现有内容中。
Private Sub CommandButton2_Click()
'update availability and utilisatioon to SMU Tracking sheet
Dim ws1 As Worksheet ' source
Dim ws2 As Worksheet ' destination
Dim Rt As Long ' target row
Dim Ct As Long ' target column
Set ws1 = Worksheets("Delays_a")
Set ws2 = Worksheets("SMU Tracking")
With ws2.Range("ProductivitySMU")
Ct = .Column
Rt = ws2.Cells(.Row, Ct).End(xlDown).Row + 1
If Rt > ws2.Rows.Count Then Rt = .Row
End With
ws1.Range("Productivity").Copy
With ws2.Cells(Rt, Ct)
.PasteSpecial xlPasteAll
.PasteSpecial xlPasteColumnWidths
' https://docs.microsoft.com/en-us/office/vba/api/excel.xlpastetype
End With
Application.CutCopyMode = False
End Sub
本质上,不需要命名目标范围,因为代码仅使用名称来查找目标单元格。实际上,如果其列中的总行数超过指定的行数,则该名称将变得无关紧要。就我的代码而言,目标范围的相关成员是其第一个单元格。如果您在项目中对该范围有其他用途,则可以使其动态化,自动扩展到该列的末尾,而不会影响此代码的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句