我在 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。虽然,在我写这篇文章时,我想知道这是否与我如何在 With block 中调用 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
关于vba - Excel-VBA .Range ("NamedRange").Row 返回不同的行然后范围所在的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095249/