Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel使用“更改时”宏链接不同工作表中的两个单元格_Vba_Excel - Fatal编程技术网

Vba Excel使用“更改时”宏链接不同工作表中的两个单元格

Vba Excel使用“更改时”宏链接不同工作表中的两个单元格,vba,excel,Vba,Excel,我有一个包含多个工作表的Excel工作簿。我在工作表a中有一个单元格,区域名为TRACK1,在工作表B中有一个单元格,区域名为TRACK2 从列表中验证每个TRACK1和TRACK2。用户可以从选中单元格时显示的下拉列表中更改任一单元格 我希望能够允许用户更改其中一个,并将另一个也更改为匹配。TRACK1和TRACK2的更改值将更改,反之亦然 我知道如何执行此基本宏,但如何停止事件传播 Private Sub Worksheet_Change(ByVal Target As Range)

我有一个包含多个工作表的Excel工作簿。我在工作表a中有一个单元格,区域名为TRACK1,在工作表B中有一个单元格,区域名为TRACK2

从列表中验证每个TRACK1和TRACK2。用户可以从选中单元格时显示的下拉列表中更改任一单元格

我希望能够允许用户更改其中一个,并将另一个也更改为匹配。TRACK1和TRACK2的更改值将更改,反之亦然

我知道如何执行此基本宏,但如何停止事件传播

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Range("TRACK1")) Is Nothing Then
        Range("TRACK2") = Range("TRACK1")
    End If

    If Not Application.Intersect(Target, Range("TRACK2")) Is Nothing Then
        Range("TRACK1") = Range("TRACK2")
    End If

End Sub

在工作表A的代码模块中,使用:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Application.Intersect(Target, Range("TRACK1")) Is Nothing Then
        Worksheets("WORKSHEET B").Range("TRACK2") = Range("TRACK1")
    End If
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Application.Intersect(Target, Range("TRACK2")) Is Nothing Then
        Worksheets("WORKSHEET A").Range("TRACK1") = Range("TRACK2")
    End If
    Application.EnableEvents = True
End Sub
在工作表B的代码模块中,使用:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Application.Intersect(Target, Range("TRACK1")) Is Nothing Then
        Worksheets("WORKSHEET B").Range("TRACK2") = Range("TRACK1")
    End If
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Application.Intersect(Target, Range("TRACK2")) Is Nothing Then
        Worksheets("WORKSHEET A").Range("TRACK1") = Range("TRACK2")
    End If
    Application.EnableEvents = True
End Sub

Hi@YowE3K为什么我会收到
错误1004:对象“\u工作表”的方法“范围”失败
指向
Range(“TRACK1”)=Range(“TRACK2”)
我使用工具栏左上角的命名框来命名单元格。我可以通过执行
=TRACK1
访问任何工作簿中的每个单元格值。这些是工作簿的全局范围,对吗?我也尝试过像这样详细说明工作表
Sheets(“Sheet2”).Range(“TRACK1”)=Sheets(“Sheet3”).Range(“TRACK2”)
,但由于
下标超出范围而失败。
错误。看来我们需要限定不在活动工作表中的范围引用-让我做一个更改。@TheAllapa OK-看看我刚才所做的更新。确保将工作表名称更改为实际名称。哎呀,刚刚注意到你的评论。你说你试过了?是否确实使用了正确的图纸名称作为正确的范围名称?