2017-01-23 27 views
1

我有一个宏'Edit_Row',它将来自活动行的值带入用户窗体进行编辑。该宏被另一个宏,它通过选择表中的B列的单元格相应的行引发所谓:通过单元格选择触发的宏

Option Explicit 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Selection.Count = 1 Then 
    If Not Intersect(Target, Range("B3:B9999")) Is Nothing Then 
     Call Edit_Row 
    End If 
End If 
End Sub 

这如预期运作,除了一个事实,即这个宏也被激活任何在桌上完成排序。还有什么我可以做到达到相同的结果(没有这些误报)?

回答

1

假设你的表的Range包括在第3行头,尝试这样的事情:

Option Explicit 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim tbl As ListObject 
Set tbl = Me.ListObjects("Table1") 'Modify using your table's Name 

If Target.Cells.Count <> 1 Then Exit Sub 

If Not Intersect(Target, tbl.DataBodyRange.Columns(2)) Is Nothing Then 
    Call Edit_Row 
End If 

End Sub 

注意:如果您的表不列A开头,然后修改.Columns(2).Columns(1)

这应该工作的方式是,它检查Selection是否为表的DataBodyRange(不包括标题行)的一部分。

+0

优秀;这工作就像一个魅力! –

相关问题