[英]VBA - How to set the start and end row when setting a range by column numbers
假設我按列號設置多個不同列的范圍,如下所示:
Set rngData = shtData.Range(Columns(1), Columns(2), Columns(5))
但是我只希望范圍從第5行開始,到第10行結束。
我可以在Set rngData語句中指定嗎? 感謝任何幫助
編輯。
感謝KazJaw,這是對我有用的解決方案:
Dim shtData, rngData
Set shtData = Worksheets("Data")
Set rngData = Union(shtData.Columns(1), shtData.Columns(2), shtData.Columns(5))
Set rngData = Intersect(rngData, shtData.Rows("5:10"))
可能的方法很少,但我不確定哪種方法最適合您。 我的第一個也是最簡單的建議是:
Set rngData = shtData.Range(Columns(1), Columns(2), Columns(5))
set rngData = Intersect(rngData, shtData.Rows("5:10"))
但是,您當前的范圍仍然無法正常工作。 您可以改用以下方式:
Set rngData = shtData.Range("A:B, E:E")
或者,如果您需要保留列的數字索引,則可以采用這種方式(完整代碼):
Set rngData = Union(shtData.Columns(1), shtData.Columns(2), shtData.Columns(5))
set rngData = Intersect(rngData, shtData.Rows("5:10"))
編輯-擴展和解釋:請參見下面的子例程和注釋
Sub Test_Selection()
'Variant A- select range from column 1 to 5
ActiveSheet.Range(Columns(1), Columns(5)).Select
'Variant B- select range of columns: 1, 2 and 5
With ActiveSheet
Union(.Columns(1), .Columns(2), .Columns(5)).Select
End With
'This will not work
ActiveSheet.Range(Columns(1), Columns(2), Columns(5)).Select
End Sub
因此,上述變體B可以選擇不連續的范圍,如下所示:
對於所有感興趣的人,以及有關Intesect的最終解釋。 此過程將產生如下圖所示的結果:
Sub Final_Combination()
Dim shtData As Worksheet
Set shtData = ActiveSheet
Dim rngData As Range
Set rngData = Union(shtData.Columns(1), shtData.Columns(2), shtData.Columns(5))
Set rngData = Intersect(rngData, shtData.Rows("5:10"))
'or simply combined in one line of code
Set rngData = Intersect(Union(shtData.Columns(1), _
shtData.Columns(2), _
shtData.Columns(5)), _
Rows("5:10"))
rngData.Select
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.