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

How to trigger a Macro by ONLY selecting any cell in the row directly below a table (ListObject)

我目前有下面的代码,当您单击 on/select Table 下方行中的任何单元格(我的代码中的命名范围:“Table2") 还有 table.

中的任何单元格

当您单击on/select 正下方[=21] 的任何单元格时,我如何才能限制代码触发宏=] 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) 偏移了整个 table 的范围。所以范围现在是表格的大小,但向下一行。

您实际需要做的是减少 table 的行数(因此范围 begins 在 [=25= 下方的行中=],然后将其调整为一行。

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

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