如何通过仅选择表正下方行中的任何单元格来触发宏 (ListObject)

问题描述

我目前有下面的代码,当您单击/选择表格下方行中的任何单元格(我的代码中的命名范围:“Table2”)时,它会触发我的 Addrecordtotable 而且 表格中的任何单元格。

当您单击/选择在 ListObject/table 正下方行中的任何单元格时,如何限制代码以触发宏?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target,Range("Table2").Offset(1)) Is nothing Then
            Call Addrecordtotable
        End If
    End If
End Sub

解决方法

问题是 Range("Table2").Offset(1) 偏移了整个表的范围。所以范围现在是表格的大小,但向下一行。

您实际上需要的是减少表格的行数(因此范围开始在表格下方的行中,然后将其调整为一行。 >

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.CountLarge = 1 Then
        If Not Intersect(Target,Me.Range("Table2").Offset(RowOffset:=Me.Range("Table2").Rows.Count).Resize(RowSize:=1)) Is Nothing Then
            Call Addrecordtotable
        End If
    End If
End Sub

另请注意,此处应使用 Selection 而不是 Target。并且您需要使用 CountLarge 而不是 Count,否则如果您选择工作表的所有单元格,则会出现溢出错误。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...