如何通过仅选择 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 工作表的所有单元格,则会出现溢出错误。
我目前有下面的代码,当您单击 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 工作表的所有单元格,则会出现溢出错误。