[英]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.