vba - 相交命令因工作表范围不同而失败

标签 vba excel global intersect

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

如果 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

最佳答案

如果两个范围在同一个工作表上,则只能使用 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

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

关于vba - 相交命令因工作表范围不同而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29560327/

相关文章:

vba - 有没有办法测试 Excel 中的图表是否堆叠了其系列

vba - 如何从vba中的多个列复制和粘贴

vba - 使用 Excel VBA 创建有效的退出条件时遇到问题

sql - VBA 连接到 SQL Server 数据源名称未找到且未指定默认驱动程序?

Excel VBA : Sort Sheets in Alphanumeric Order

使用 Open XML SDK 保护 Excel 文件密码

C++ 允许重新定义全局(const)变量吗?

python - 如何使全局变量在函数内部的 Spyder 中工作?

PHP 全局或 $GLOBALS

excel - 停止宏以允许编辑工作簿