正确的复制和粘贴方式

时间:2019-04-04 06:57:13

标签: excel vba

我正在excel中制作此代码,该代码会复制一定范围的副本,然后打开另一个工作簿并将此数据粘贴到正确的范围内。有时,当我在代码中进行一些调整时,它不再能正常工作。所以我做了一些研究,现在我想可以对我的代码进行一些升级,但是我不确定如何做。

我的代码基础 该代码首先搜索要复制的范围,然后打开另一个工作簿。在此工作簿中,找到了粘贴数据的范围,然后将复制的数据粘贴到该范围中。工作簿被关闭。

这就是我在Google上找到的 我在Google上找到了此代码(它基于不同的代码),但是也许我可以使用此代码来升级我的代码,所以它会更可靠。

Sheets("All_Rentals").Range("AA8") = .Range("B34").Value

我尝试使用此代码,但没有取得任何良好的结果,我尝试了如下操作:

Rngp = rngc

但是我不认为它能像这样工作,那我该怎么办?

这是我的代码的一部分

复制一定范围的代码:

Dim rngc As Range
Set rngc = 
Workbooks(ThisFile).Sheets("Planning").Range(Cells(11,Weekcolumn.Column), 
Cells(12, Weekcolumn.Offset(0, 106).Column))
rngc.copy

找到要粘贴范围的代码:

Dim CurrentBureauWeek As String
        CurrentBureauWeek = 
Workbooks(ThisFile).Sheets("Planning").Range("D3").Value

With Workbooks("Bureauplanning.xlsm").Sheets("Planning").Range("M10:DM10")
Set ThisWeek = .Find(What:=CurrentBureauWeek, LookIn:=xlValues, 
LookAt:=xlWhole, MatchCase:=False, Searchformat:=False)
If Not ThisWeek Is Nothing Then

End If
End With


Dim Thisprojecrow As Range

With Workbooks("Bureauplanning.xlsm").Sheets("Planning").Range("A:A")
Set Thisprojectrow = .Find(What:=Thisproject, LookIn:=xlValues, 
LookAt:=xlWhole, MatchCase:=False, Searchformat:=False)
If Not Thisprojectrow Is Nothing Then

End If
End With

粘贴数据的代码:

Dim rngp As Range
Set rngp= Workbooks("Bureauplanning.xlsm"). 
Sheets("Planning").Cells(Thisprojectrow.Offse t(-2, 0).row, 
ThisWeek.Column)
rngp.PasteSpecial Paste:=xlPasteValues

我希望有人可以帮助我升级我的代码,使其更有效。

2 个答案:

答案 0 :(得分:0)

// Create the IServiceProvider based on the container. return new AutofacServiceProvider(this.ApplicationContainer); 应该可以工作,但是由于不需要使用此功能,因此请省略public void ConfigureServices(IServiceCollection services)

在您提供的代码中,您正在使用Rngp = rngc

复制和粘贴值

一种更快的方法是将范围 A 的值设置为等于范围 B 的值。换句话说:

.Copy

这会将值从xlPasteValues后面的范围粘贴到第一个范围。

请注意,要复制所有值,这些范围的大小必须相等。

因此,对于您的代码(作为示例):

Range(DestinationRange).Value = Range(CopyRange).Value

编辑OP的评论

=

答案 1 :(得分:0)

一些选项是:

Option Explicit

Sub test()

    Dim wb1 As Workbook, wb2 As Workbook
    Dim rng1 As Range, rng2 As Range

    Set wb1 = Workbooks("Book1") '<- Make sure both workbooks are open
    Set wb2 = Workbooks("Book2")

    Set rng1 = wb1.Worksheets("Sheet1").Range("A1:B2")
    Set rng2 = wb2.Worksheets("Sheet1").Range("A1")

    'Copy Contents and Formatting
    rng1.Copy rng2

    'Copy Contents
    rng1.Copy
    rng2.PasteSpecial Paste:=xlPasteValues

End Sub