[英]Using .Rows In Excel VBA
我在使復制/粘貼清潔方面遇到問題。 目前我有這個:
If distanceValue <= distanceParameter Then
sh2.Rows(i).Copy _
sh3.Rows(i).Offset(0, 1)
End If
sh2和sh3已正確定義,並且位於for循環內; 那不是問題。 使用Range似乎很麻煩,因為我必須定義一個lastcolumn變量,等等。無論如何,.rows可以做到這一點嗎?
目標是將滿足條件的行復制到另一張工作表,但將A列留空。 任何對干凈解決方案的反饋(我知道這是錯誤的)將不勝感激。
復制范圍(如果復制整個行)將大於粘貼范圍(如果您偏移一列)。 您無法將16384列粘貼到16383中,沒有足夠的空間。
如果您不想使用范圍功能,則必須復制整個行,然后在前面添加一列。
或者,您可以在復制粘貼之前將列添加到源數據中,如果需要,可以在完成后刪除列。
Sub Sample()
Dim sh2 As Worksheet, sh3 As Worksheet
Set sh2 = Worksheets("Sheet1")
Set sh3 = Worksheets("Sheet2")
If distanceValue <= distanceParameter Then
sh2.Rows(i).Copy _
sh3.Rows(i)
End If
sh3.Columns("A").insert
End Sub
要么
Sub Sample()
Dim sh2 As Worksheet, sh3 As Worksheet
Set sh2 = Worksheets("Sheet1")
Set sh3 = Worksheets("Sheet2")
sh2.Columns("A").insert
If distanceValue <= distanceParameter Then
sh2.Rows(i).Copy _
sh3.Rows(i)
End If
'The next line is to return the source data back to the original format remove if not needed
sh2.Columns("A").Delete
End Sub
您最后的選擇和最動態的選擇是使用listobject / DataTable而不是Excel范圍。 如果可能的話。
如果已經有一個Table,那么您可以簡單地使用:
Sub Sample()
Dim sh2 As Worksheet, sh3 As Worksheet
Dim rngCurrentRow As Range
Set sh2 = Worksheets("Sheet1")
Set sh3 = Worksheets("Sheet2")
Set rngCurrentRow = sh2.ListObjects("YourTableNameHere").ListRows(i).Range
If distanceValue <= distanceParameter Then
rngCurrentRow.Copy _
sh3.Cells(i, 2)
End If
End Sub
將范圍制作成表格非常容易,如果您的數據中不包含空格,則就像單擊范圍中的第一個單元格並按Ctrl+L
一樣簡單,然后將選擇您的范圍,如果您需要增加大小范圍,因為它確實包含空格,然后只需更改輸入框以選擇所有數據即可。
不要忘記您是否有heade3rs選中該復選框
注意:如果不確定表名,只需單擊表,然后在功能區上將彈出一個新選項卡,其末尾稱為表工具/設計。 在該標簽的最左側區域包含表名,您可以將其更改為所需的任何名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.