通过设置工作簿之间相等的变量范围来复制。对象工作表范围失败[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我试图通过设置范围(具有不同数量的行但静态列)彼此相等的方式将值从一个工作簿复制并粘贴到主工作簿中。 whWb.whexpoSh是主表,因此需要将值添加到第一个空行。

我遇到了最后一行代码(***)的问题。我一直在

对象_worksheet的方法范围失败

我得到了这种方法,但只有当我在最后一行使用带有expoSh的固定范围的单元名称时。

在我正在测试的例子中,F = 2,A = 6,B = 7和lrowExpo = 7.因此范围区域匹配。

Sub Export_to_Master_Sheet()

Dim lRowWhExpo As Integer, lRowWhLoss As Integer, lrowExpo As Integer, lrowLoss As Integer
Dim expWb As Workbook, whWb As Workbook
Dim covWs As Worksheet, expoSh As Worksheet, lossSh As Worksheet, whexpoSh As Worksheet, whlossSh As Worksheet
Dim A As Integer, B As Integer, C As Integer, D As Integer, F As Integer
 Application.ScreenUpdating = False

Set expWb = ThisWorkbook
Set covWs = expWb.Worksheets("Cover")
Set expoSh = expWb.Worksheets("Exposure Data Capture")
Set lossSh = expWb.Worksheets("Loss Data Capture")

F = covWs.Range("H2").Value

Application.Workbooks.Open FileName:="G:\GST\Documents\Exposure and Loss Data.xlsx"

Set whWb = ActiveWorkbook
Set whexpoSh = whWb.Worksheets("Exposure Data Capture")
Set whlossSh = whWb.Worksheets("Loss Data Capture")

lrowExpo = expoSh.Columns("B").Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlValues).Row
lRowWhExpo = whexpoSh.Cells(Rows.Count, 2).End(xlUp).Row

A = lRowWhExpo + 1
B = lRowWhExpo + F

***whexpoSh.Range(Cells(A, 1), Cells(B, 111)).Value = expoSh.Range(Cells(6, 1), Cells(lrowExpo, 111)).Value

End Sub
excel vba excel-vba
1个回答
1
投票

这似乎适用于我的有限测试:

替换此行:

***whexpoSh.Range(Cells(A, 1), Cells(B, 111)).Value = expoSh.Range(Cells(6, 1), Cells(lrowExpo, 111)).Value

有了这个:

Dim toRng As Range, fromRng As Range
With whexpoSh
    Set toRng = .Range(.Cells(A, 1), .Cells(B, 111))
End With
With expoSh
    Set fromRng = .Range(.Cells(6, 1), .Cells(lrowExpo, 111))
End With

toRng.Value = fromRng.Value

我建议您声明Range对象。它可以使调试更容易一些。

© www.soinside.com 2019 - 2024. All rights reserved.