繁体   English   中英

Excel-VBA .Range(“ NamedRange”)。Row返回另一个行,然后再定位范围

[英]Excel-VBA .Range(“NamedRange”).Row Returning a Different Row Then Where Range is Located

我在Excel中具有以下命名范围。

在此处输入图片说明

我也有以下与该命名范围一起工作的代码:

With wsVehicleSummary

With .Range(.Cells(.Range("VehicleList").Row, 1), .Cells(.Range("VehicleList").Row, .Range("K1").Column)).Offset(1)
    .PasteSpecial xlPasteValues
    .Resize(.Range("VehicleList").End(xlDown).Row - .Range("VehicleList").Row, 11).RemoveDuplicates 1, xlYes
    .Resize(.Range("VehicleList").End(xlDown).Row - .Range("VehicleList").Row, 11).Sort "Veh #", xlAscending, Header:=xlYes
End With

这个问题出现在Remove Duplicates调用中,我将其范围缩小到.Range("VehicleList").Row等于40,应为20(如屏幕截图所示)。

我已经在运行时调试了此命令,并为为什么?.Range("VehicleList").Row返回40(而不是20 ?.Range("VehicleList").Row感到困惑。

尽管在撰写本文时,我想知道它是否与我在With块中调用range以及如何使用Resize有关。

有什么建议或想法吗?

感谢@Rory的评论,我进行了以下更改,并且我的代码现在可以按预期运行。

With wsVehicleSummary

    Dim lRowResize As Long
    lRowResize = .Range("VehicleList").End(xlDown).Row - .Range("VehicleList").Row

    With .Range(.Cells(.Range("VehicleList").Row, 1), .Cells(.Range("VehicleList").Row, .Range("K1").Column))
        .Offset(1).PasteSpecial xlPasteValues
        .Resize(lRowResize, 11).RemoveDuplicates 1, xlYes
        .Resize(lRowResize, 11).Sort "Veh #", xlAscending, Header:=xlYes
    End With

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM