【问题标题】:Intersect command fails with different sheet ranges相交命令因工作表范围不同而失败
【发布时间】:2015-04-10 11:30:01
【问题描述】:

我正在尝试创建一个自我更新的下拉列表。为了实现这一点,我找到了一个代码并将其改编为我的工作簿。如果代码在名为“default”的工作表中,但当我尝试将其重定向到另一个工作表时,它会卡在下面的代码中,并出现此错误(方法 'intersect' object' _global failed”

如果 Intersect(Target, Worksheets("default").Range("c" & count_cells + 1)) 什么都没有,那么

    Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim count_cells As Integer
Dim new_value As String
Dim old_value As String
For count_cells = 1 To Worksheets("default").Range("c2:c400").CurrentRegion.Rows.Count - 1
    If Intersect(Target, Worksheets("default").Range("c" & count_cells + 1)) Is Nothing Then
    Else
        Application.EnableEvents = False
        new_value = Target.Value
        Application.Undo
        old_value = Target.Value
        Target.Value = new_value
        Range("AS:AS").Select
        Selection.Replace What:=old_value, Replacement:=new_value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        Target.Select
    End If
Next count_cells
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

【问题讨论】:

    标签: vba excel global intersect


    【解决方案1】:

    如果两个范围在同一个工作表上,您只能使用 Intersect()。例如:

    Sub IntersectTest()
        Dim r1 As Range, r2 As Range, r3 As Range
        Set r1 = Sheets("Sheet1").Range("A1")
        Set r2 = Sheets("Sheet2").Range("A1")
        Set r3 = Intersect(r1, r2)
    End Sub
    

    会失败............就像你的代码一样。

    【讨论】:

    • 当然.....因为 Target 指的是工作表上包含事件宏的范围,因此您需要一个单独的事件宏来处理任何必须更改的工作表检测到!
    • 该死!我认为这会更简单:) 我完全是新手,所以你能给我一个例子,就像你上面写的一样。然后我会尝试调整它:) 感谢您的帮助和关注
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2019-03-19
    • 2021-08-08
    • 2020-11-15
    相关资源
    最近更新 更多