如何通过仅选择表正下方行中的任何单元格来触发宏(ListObject)
Posted
技术标签:
【中文标题】如何通过仅选择表正下方行中的任何单元格来触发宏(ListObject)【英文标题】:How to trigger a Macro by ONLY selecting any cell in the row directly below a table (ListObject) 【发布时间】:2021-09-22 04:32:18 【问题描述】:我目前有下面的代码,当您单击/选择表格下方行中的任何单元格时触发我的Addrecordtotable
(我的代码中的命名范围:“Table2”)而且 表格中 的任何单元格。
当您单击/选择仅行中的任何单元格直接在列表对象/表下方时,我该如何限制代码触发宏?
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
【问题讨论】:
如果我是正确的,您将整个“Table2”范围向下移动一行。您也必须将其修剪为一行。 【参考方案1】:问题是Range("Table2").Offset(1)
偏移了整个表格的范围。所以范围现在是表格的大小,但向下一行。
您实际需要做的是减少表格的行数(因此范围从表格下方的行开始,然后将其调整为一行。 p>
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
,否则如果您选择工作表的所有单元格,则会出现溢出错误。
【讨论】:
以上是关于如何通过仅选择表正下方行中的任何单元格来触发宏(ListObject)的主要内容,如果未能解决你的问题,请参考以下文章
C#/我通过随机选择下一个单元格来填充字符串数组中的 DataGridView,并且不想再次选择使用过的单元格