首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时错误1004 -该命令不能用于多个选择

运行时错误1004 -该命令不能用于多个选择
EN

Stack Overflow用户
提问于 2018-05-25 07:26:17
回答 1查看 1.2K关注 0票数 1

下面的代码从特定列复制数据并将其传输到另一列。例如,如果在列A中,我拥有从第1行到第10行的数据并按下按钮,那么从第1行到第10行的值将被传输到列D。然后,如果我更改A列第5、7和9行中的值并按下按钮,则只有来自第5、7和9的值将被传输到列D。代码之所以如此,是因为工作表中有许多行填充了值,而我希望只传输(复制)已修改的值。否则,这将需要相当长的时间。

代码可以工作,但有时我得到错误--逗号--不能在多个选择上使用。我试着在互联网上查看一下来修复它,但是我想不出任何解决方案。任何帮助都将不胜感激!

Note:一个来自这个社区的用户在一段时间前帮助我编写了下面的代码,但是我再也找不到这个链接了。

此代码粘贴在我正在使用的工作表中:

代码语言:javascript
复制
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 

这个代码被粘贴在一个模块中:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-25 07:39:41

PasteSpecial不适用于多个范围。可以使用Areas属性遍历范围的所有部分:

代码语言:javascript
复制
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)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50523681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档