下面的代码从特定列复制数据并将其传输到另一列。例如,如果在列A中,我拥有从第1行到第10行的数据并按下按钮,那么从第1行到第10行的值将被传输到列D。然后,如果我更改A列第5、7和9行中的值并按下按钮,则只有来自第5、7和9的值将被传输到列D。代码之所以如此,是因为工作表中有许多行填充了值,而我希望只传输(复制)已修改的值。否则,这将需要相当长的时间。
代码可以工作,但有时我得到错误--逗号--不能在多个选择上使用。我试着在互联网上查看一下来修复它,但是我想不出任何解决方案。任何帮助都将不胜感激!
Note:一个来自这个社区的用户在一段时间前帮助我编写了下面的代码,但是我再也找不到这个链接了。
此代码粘贴在我正在使用的工作表中:
Option Explicit
Private Sub Worksheet_Change(ByVal target As Range)
Dim creation As Worksheet
Set creation = ActiveSheet
Dim copydata As Range
Set copydata = Application.Intersect(target, creation.Range("A2:A5000", "A" & creation.Rows.Count))
If (Not copydata Is Nothing) Then
If (CopyDataRange Is Nothing) Then
Set CopyDataRange = copydata
Else
Set CopyDataRange = Application.Union(CopyDataRange, copydata)
End If
End If
End Sub 这个代码被粘贴在一个模块中:
Option Explicit
Public CopyDataRange As Range
Public Sub CommandButton1_Click()
Application.ScreenUpdating = False
If (Not CopyDataRange Is Nothing) Then
CopyDataRange.Copy
CopyDataRange.Offset(0, 3).PasteSpecial Paste:=xlPasteValues ' this where I get the error
Set CopyDataRange = Nothing
End If
Application.ScreenUpdating = True
End Sub发布于 2018-05-25 07:39:41
PasteSpecial不适用于多个范围。可以使用Areas属性遍历范围的所有部分:
if Not CopyDataRange Is Nothing then
Dim r As Range
For Each r In CopyDataRange.Areas
r.Copy
r.Offset(0, 3).PasteSpecial Paste:=xlPasteValues
Next
set CopyDataRange = nothing
end if 即使您没有多个范围,它也能工作,在这种情况下,它只包含一个Area (Areas.Count = 1)
https://stackoverflow.com/questions/50523681
复制相似问题