Excel-VBA.Range(“NamedRange”)。行返回一个不同的行,然后定位范围

我有以下在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(可以在屏幕截图中看到)。

我已经在运行时debugging了这个,而且为什么?.Range("VehicleList").Row正在返回40而不是20。

虽然,当我写这篇文章的时候,我想知道是不是和我在With块中调用范围有关,以及如何使用Resize。

任何build议或想法?

感谢@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