2017-01-23 46 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

優秀;這工作就像一個魅力! –