簡體   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