[英]MS Excel VBA - Selecting multiple distinct dynamic ranges
我需要將數據復制到彼此不相鄰的各個列中,這些列將具有可變的行數(但該變量的每一列將具有相同的值)。
到目前為止,我的代碼如下:
Set MyXL = CreateObject("Excel.Application")
MyXL.Workbooks.Add
MyXL.Worksheets(1).Name = SheetName
Set shtData = Worksheets("Data")
rngDataRowCount = shtData.Range("A1048576").End(xlUp).Row
Set rngData = shtData.Range("A1:I" & rngDataRowCount)
rngData.Copy
MyXL.Worksheets(SheetName).Activate
MyXL.Worksheets(SheetName).Paste
Range("A1").Select
只要各列彼此相鄰,它就可以正常工作,但不允許我添加其他列。
我希望可以做類似的事情:
Set rngData = shtData.Range("A1:I, N1:N, P1:R" & rngDataRowCount)
但是此聲明失敗。 或者,有什么方法可以設置多個范圍,然后追加到剪貼板? 任何幫助,當然,贊賞。
編輯:為了澄清我正在嘗試實現的功能,讓我們說我有下表:
_________________________________________________________
| col1 | col2 | col3 | col4 | col5 | col6 | col7 | col8 |
_________________________________________________________
| q | w | e | r | t | y | u | i |
_________________________________________________________
| q | w | e | r | t | y | u | i |
_________________________________________________________
我希望能夠選擇一個范圍,例如col1,col2,col5和col8,這樣它就可以一次性復制那些列中所有填充的單元格,以便粘貼可以實現以下目的:
_____________________________
| col1 | col2 | col5 | col8 |
_____________________________
| q | w | t | i |
_____________________________
| q | w | t | i |
_____________________________
我認為這可能對您來說是一個主意,只是使用循環即可。
編輯以使其清楚:結果,您將分別復制每一列。 列到副本的順序將保留。 如果您保持恆定的目標范圍規則,則每列將以相同順序復制到適當的范圍內。
Sub Answer()
Dim shtData As Worksheet
Set shtData = Worksheets("Data")
Dim rngDataRowCount
rngDataRowCount = shtData.Range("A1048576").End(xlUp).Row
Dim rngData As Range
'<--start of modification
Dim rngCol As Range
Set rngData = shtData.Range("A1:I" & rngDataRowCount & _
",N1:N" & rngDataRowCount & _
",P1:R" & rngDataRowCount)
'<---variant A- keep columns separated into destination range
For Each rngCol In rngData.Columns
rngCol.Copy rngCol.Offset(0, 20) 'here, 20 columns to right
Next
**'here edited**
'<---variant B- copy columns into new location, united, no loop
rngData.Copy Range("zz1") 'here, set destination as single top-left cell
End Sub
一個技巧-如果您將列復制到其他Range中,請使用所顯示的Range語法。 Range.Copy destinationRange
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.