我有一个电子表格,我通过If / ElseIf链监控8个不同列中的更改,Application.Intersect
与下面的示例类似。根据列的不同,代码可以采取不同的操作,例如粘贴数据并对其进行转置,仅粘贴值或可能更改行中其他单元格的值。
If Not Application.Intersect(Target, ChangeNum) Is Nothing Then
' Do some stuff
ElseIf Not Application.Intersect(Target, TransType) Is Nothing Then
' Do different stuff
... ' 6 more ElseIf statements
End If
ChangeNum
和TransType
都是特定列中定义的范围,与我未包含的其他6个ElseIfs相同。
问题在于,ElseIfs链中的最后一项不会触发,也不会按预期触发。如果我采用那个确切的代码并在If / ElseIf树中将其向上移动一级,它会按预期工作,但随后它移位的代码将无法正常工作。
VBA中的If / ElseIf链中的链接数量是否有限制?如果是,那么Select
陈述呢?如果不是,那么只要不是If / ElseIf链中的最终链接,有没有人对为什么完全相同的代码有效有任何想法?
答案 0 :(得分:0)
最可能的问题是您要检查的范围可能包含在其他一个中找到的单元格。如果您使用类似于以下语句的语句设置范围:
Set ChangeNum = Range("nameofrange")
然后,在某些更改期间,链接到该范围的名称可能已与excel重新关联。检查此问题的最简单方法是转到功能区上的公式标签,然后选择名称管理器。仔细检查范围是否符合您的预期。如果不是简单地调整它们,您的代码应该按预期开始工作。