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