如果您偏移一列,您的复制范围(如果您复制整行)将大于您的粘贴范围。无法将 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 范围。如果可能的话。
如果你已经有一个表那么你可以简单地使用:
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来检查复选框
注意:如果您不确定您的表格名称,只需单击表格,然后在功能区上会弹出一个新选项卡,最后称为表格工具/设计。在该选项卡上,最左侧的区域包含您的表名,您可以将其更改为您想要的任何内容。