我得到运行时错误9

时间:2017-12-11 13:59:11

标签: excel vba excel-vba copy-paste

我正在制作项目,其中有更改的表需要复制到另一张表,它需要同步数据传输槽表,如果我们填写一个表单数据需要转移到所有表。

trade.buyVolume(newValue);

2 个答案:

答案 0 :(得分:0)

想象一下,您只有2个工作表。将以下代码放在第一个工作表上,这里:

enter image description here

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    If Target.Count > 1 Then
        MsgBox ("More than 1!")
        Exit Sub
    End If

    Set KeyCells = Range("C4:E8")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        Worksheets(1).Range("C4:E8").Copy Destination:=Worksheets(2).Range("C4:E8")
    End If

End Sub

更改C4:E8中的数据后,它将被复制到第二个工作表。

如果你把它放在第二个工作表上,这将产生一个很好的递归错误。如果你愿意,试试吧! :)

编辑: 这个问题有很多方法可以做到。这是循环遍历单元格的一种方式:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim KeyCells    As Range
    Dim rngCell     As Range

    Set KeyCells = Worksheets(1).Range("C4:E8")

    If Not Application.Intersect(KeyCells, Target) Is Nothing Then
        For Each rngCell In KeyCells
            Worksheets(2).Cells(rngCell.Row, rngCell.Column) = rngCell
        Next rngCell
    End If

End Sub

但是,如果您在worksheets(1)worksheets(2)

中合并了单元格,则效果不佳

答案 1 :(得分:0)

使用后

选项明确

Private Sub Worksheet_Change(ByVal Target As Range)

Dim KeyCells    As Range
Dim rngCell     As Range

Set KeyCells = Worksheets(1).Range("C4:E8")

If Not Application.Intersect(KeyCells, Target) Is Nothing Then
    For Each rngCell In KeyCells
        Worksheets(2).Cells(rngCell.Row, rngCell.Column) = rngCell
    Next rngCell
End If

enter image description here