这个问题在这里已有答案:
我试图通过设置范围(具有不同数量的行但静态列)彼此相等的方式将值从一个工作簿复制并粘贴到主工作簿中。 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
这似乎适用于我的有限测试:
替换此行:
***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对象。它可以使调试更容易一些。