如果与另一个范围相交,则停止触发事件 SelectionChange(已使用相交)?

Posted

技术标签:

【中文标题】如果与另一个范围相交,则停止触发事件 SelectionChange(已使用相交)?【英文标题】:Stop firing event SelectionChange (Intersect already used) if it intersects with another range 【发布时间】:2022-01-23 22:45:46 【问题描述】:

如果在列 M 中选择了任何单元格,我将使用以下代码运行宏 Calendar_Advanced问题: 如果我选择了列中的任何单元格与 Range M:M 同时,事件也会触发,就像我选择所有行一样。

Private Sub worksheet_SelectionChange(ByVal Target As Excel.Range)

  Dim LastRow As Long: LastRow = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
      
  If Not Intersect(Target, Range("M3:M" & LastRow)) Is Nothing Then
        Call Calendar_Advanced
    End If
  End Sub

我尝试添加到 if 条件 And Selection.Cells.Count = 1 它有效,但防止多选 (Calendar_Advanced) 在 M 列上运行。 一如既往,任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

计算列以确保它只是 M。

Private Sub worksheet_SelectionChange(ByVal Target As Excel.Range)

    Dim LastRow As Long: LastRow = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
    If Not Intersect(Target, Range("M3:M" & LastRow)) Is Nothing Then
        If Target.Columns.Count = 1 Then
            Calendar_Advanced
        End If
    End If
End Sub

【讨论】:

非常感谢,它有效

以上是关于如果与另一个范围相交,则停止触发事件 SelectionChange(已使用相交)?的主要内容,如果未能解决你的问题,请参考以下文章

如果子按钮被禁用,则停止将事件传递给父按钮

js 触发select onchange事件代码

检查一个 geohash 是不是与另一个 geohash 相交

Flutter中的节流与防抖(过滤重复点击)

这两个范围是否相交?如果是这样,我怎么知道?

select源码剖析