我正在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
我希望有人可以帮助我升级我的代码,使其更有效。
答案 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